读取makefile中的输入变量,并根据其名称设置变量

arm*_*zit 27 makefile gnu-make

我有一个makefile,我想从输入中读取模块名称,然后根据它的名称创建目录.这是我的代码:

build:  
    @read -p "Enter Module Name:" module;  
    module_dir=./modules/$$module  
    mkdir -p $$module_dir/build;  
Run Code Online (Sandbox Code Playgroud)

但是在设置module_dir之后,它只包含./modules/(没有连接模块名称).
我的代码有什么问题?

谢谢你的回答

Bet*_*eta 66

每个命令都在自己的子shell中运行,因此变量无法从一个命令生存到下一个命令.把它们放在同一条线上它们会起作用:

build:  
    @read -p "Enter Module Name:" module; \  
    module_dir=./modules/$$module; \
    mkdir -p $$module_dir/build
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用[`.ONESHELL`](https://www.gnu.org/software/make/manual/html_node/One-Shell.html)有效地将所有命令放在同一行上. (5认同)