我在我的一个目录中有一个makefile,它使用特定的环境变量构建脚本。如果我想在同一个目录中创建另一个使用不同环境变量的makefile,该如何命名这两个makefile呢?可以用makefile.1
和makefile.2
吗?如何调用它们呢?
我在我的一个目录中有一个makefile,它使用特定的环境变量构建脚本。如果我想在同一个目录中创建另一个使用不同环境变量的makefile,该如何命名这两个makefile呢?可以用makefile.1
和makefile.2
吗?如何调用它们呢?
你可以为文件取一个有意义的名称,比如makefile.win和makefile.nix,并使用它们:
make -f makefile.win
make -f makefile.nix
或者有一个包含以下内容的Makefile:
win:
make -f makefile.win
nix:
make -f makefile.nix
并使用 make win
或 make nix
你可以用任何你想要的名字来命名makefile。我通常会把它命名为somename.mk
。稍后要使用它,你需要告诉make你想要哪个makefile。你可以使用-f
选项来实现:
make -f somename.mk
实际上,您可以在同一个make文件中设置两组环境变量。例如:
COMPILER = gcc
CCFLAGS1 = -g
CCFLAGS2 = -Wall
a: main.c
${COMPILER} ${CCFLAGS1} main.c
b: test.c
${COMPILER} ${CCFLAGS2} test.c
那么你可以直接使用make a
或者make b
。根据你的需求而定。
同时,通过-f标志,可以调用你想要的makefile。
ifeq ($(ENV),ENV1)
ENV_VAR = THIS
else
ENV_VAR = THAT
endif
default : test
.PHONY : test
test:
@echo $(ENV_VAR)
然后,您只需使用参数运行make命令
make ENV=ENV1
我在同一目录下有两个makefile文件。许多配方具有相同的名称,这里有两种解决方案:
proja_hello:
@echo "hello A"
projb_hello:
@echo "hello N"
makefile
的文件。键入make hello
。projb.mk
的 make 文件。键入bmake hello
。alias bmake ='make -f projb.mk'
。注意!这个命令可以在任何地方调用,但只能在存在projb.mk 的位置工作。
注意!使用别名会导致失去 make 自动补全功能,而输入make -f projb.mk hello
不比输入make projb_hello
更好。
make
的默认行为是什么? - pretzlstyle