【发布时间】:2012-08-16 23:24:13
【问题描述】:
我在我的目录中有一个生成文件,它构建带有某些环境变量集的脚本。如果我想在同一目录中创建另一个设置了不同环境变量的 makefile 怎么办?我应该如何命名这两个 make 文件? makefile.1 和 makefile.2 有效吗?我怎么称呼他们?
【问题讨论】:
标签: makefile
我在我的目录中有一个生成文件,它构建带有某些环境变量集的脚本。如果我想在同一目录中创建另一个设置了不同环境变量的 makefile 怎么办?我应该如何命名这两个 make 文件? makefile.1 和 makefile.2 有效吗?我怎么称呼他们?
【问题讨论】:
标签: makefile
您可以为 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
【讨论】:
make 的默认行为是什么?
你可以随意命名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。
【讨论】:
您可以这样做,而不是为同一目的使用多个 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
【讨论】:
我在同一个目录中有两个 makefile。许多食谱名称相同,这里有两种解决方案:
proja_hello:
@echo "hello A"
projb_hello:
@echo "hello N"
makefile。输入make hello。projb.mk。输入bmake hello。alias bmake ='make -f projb.mk 添加到我的.bashrc 中,所以此方法有效。笔记!该命令可以在任何地方调用,但仅适用于 projb.mk 存在的地方。
笔记!您会失去使用别名的 make 自动完成功能,并且输入 make -f projb.mk hello 并不比输入 make projb_hello 好。【讨论】: