我在我的目录中有一个生成文件,它构建具有某些环境变量集的脚本。如果我想在同一目录中创建另一个设置了不同环境变量的 makefile 怎么办?我应该如何命名这两个 make 文件?makefile.1
有效吗makefile.2
?我怎么称呼他们?
问问题
50447 次
5 回答
90
您可以为 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
于 2012-08-21T15:07:58.683 回答
16
你可以随意命名makefile。我通常将其命名为somename.mk
. 要稍后使用它,您需要告诉 make 您想要什么 makefile。-f
为此使用选项:
make -f somename.mk
于 2012-08-21T15:10:52.663 回答
11
实际上,您可以在同一个 make 文件中拥有两组环境变量。例如
COMPILER = gcc
CCFLAGS1 = -g
CCFLAGS2 = -Wall
a: main.c
${COMPILER} ${CCFLAGS1} main.c
b: test.c
${COMPILER} ${CCFLAGS2} test.c
那么你可以说make a
or make b
。取决于你想要什么。
也可以使用 -f 标志来调用您要调用的生成文件。
于 2012-08-21T15:12:29.730 回答
3
您可以这样做,而不是为同一目的使用多个 makefile。您可以传递环境或为同一个 makefile 设置一个标志。例如:
ifeq ($(ENV),ENV1)
ENV_VAR = THIS
else
ENV_VAR = THAT
endif
default : test
.PHONY : test
test:
@echo $(ENV_VAR)
然后你可以简单地运行带有参数的 make 命令
make ENV=ENV1
于 2014-11-27T06:52:43.203 回答
0
我在同一个目录中有两个makefile。许多食谱具有相同的名称,这里有两种解决方案:
1.make中的前缀
proja_hello:
@echo "hello A"
projb_hello:
@echo "hello N"
2.保留两个单独的文件
- 项目 A 有
makefile
. 键入make hello
。 - 项目 B 有一个单独的 make 文件,名为
projb.mk
. 键入bmake hello
。 - This works since I've added
alias bmake ='make -f projb.mk
to my .bashrc. Note! This command can be called anywhere but only works where projb.mk exists. Note! You lose autocompletion of make with the alias and typingmake -f projb.mk hello
is not better than typingmake projb_hello
.
于 2021-09-20T13:24:33.760 回答