2010-02-02 58 views
17

我正在使用GNU make,并在包含构建系统的项目中包含第三方库,如果CFLAGS在环境中被调用时定义为CFLAGS。由于其他原因,我喜欢在我的环境中定义CFLAGS。图书馆的建设正在从另一个makefile文件调用,所以我说,例如为:是否可以在Makefile中“取消”环境变量?

的3rdParty: $(MAKE) -f Makefile.3rdparty

但我想,以确保CFLAGS没有设置当调用作出第三方的Makefile。我可以找到最近的事情是说:

CFLAGS:=

但是,这仍然留下CFLAGS集的环境中,它只是一个空字符串。除了 从做一些可怕的像是在说:

的3rdParty: bash -c "unset CFLAGS; $(MAKE) -f Makefile.3rdparty"

有没有一种简单的方法,以“未设置”从我的主要生成文件内CFLAGS变量,所以它不存在于所有第三方库被调用时的环境?

回答

23

以下不适用于您?

unexport CFLAGS 
3rdparty: 
     $(MAKE) -f Makefile.3rdparty 
+0

它呢!我不知道关于“unfport”的关键字,现在我知道了。谢谢! – 2010-02-02 22:51:20

+1

@JayWalker,如果您满意,请将此答案标记为已接受的答案。 – 2013-05-29 19:27:58

0

如果您需要在配方等命令来定义,只有不希望它在submake定义的变量这可能是有问题的。另一种解决方案是使用ENV - 调用submake并明确设置您在submake需要设置任何环境变量,例如:

env - PATH="$$PATH" LD_LIBRARY_PATH="$$LD_LIBRARY_PATH" $(MAKE) -f Makefile.3rdparty 
-3

要取消在Linux中的环境变量。

用途:

export -n MY_ENV_VARIABLE 
0

随着版本3.82的make也有一个 “undefine” 指令:

undefine CFLAGS 
相关问题