一个目录中有多个makefile
我在我的目录中有一个makefile,它使用特定的环境变量集构建脚本。如果我想在同一个目录中创建另一个设置了不同环境变量的makefile,该怎么办?我应该如何命名这两个make文件?一个目录中有多个makefile,makefile,Makefile,我在我的目录中有一个makefile,它使用特定的环境变量集构建脚本。如果我想在同一个目录中创建另一个设置了不同环境变量的makefile,该怎么办?我应该如何命名这两个make文件?makefile.1和makefile.2有效吗?如何命名它们?您可以为makefile.win和makefile.nix等文件指定合理的名称并使用它们: make -f makefile.win make -f makefile.nix 或者具有包含以下内容的生成文件: win: make -f makef
makefile.1
和makefile.2
有效吗?如何命名它们?您可以为makefile.win和makefile.nix等文件指定合理的名称并使用它们:
make -f makefile.win
make -f makefile.nix
或者具有包含以下内容的生成文件:
win:
make -f makefile.win
nix:
make -f makefile.nix
使用
makewin
或makenix
您可以随意命名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
然后你可以说makea
或makeb
。取决于你想要什么
也可以使用-f标志调用要调用的makefile。您可以这样做,而不是为了相同的目的使用多个makefiles。您可以向同一个makefile传递环境或设置标志。例如:
ifeq ($(ENV),ENV1)
ENV_VAR = THIS
else
ENV_VAR = THAT
endif
default : test
.PHONY : test
test:
@echo $(ENV_VAR)
然后,您可以简单地使用参数运行make命令
make ENV=ENV1
在后一种情况下,
make
的默认行为是什么?默认情况下,它将使用名为Makefile的行为。如果不指定目标,则默认目标是文件中第一个配方中的目标(当然,这可能取决于后面的配方)。