背景:我在Eclipse中开发,并从Hudson调用mak文件进行夜间构建。我希望某些#ifdef
的值取决于代码是在Eclipse中构建还是在生成文件的外部。我的(C++)代码如何判断它是否在Eclipse中进行编译?
所以,类似#ifdef _Eclipse_
会很好。
背景:我在Eclipse中开发,并从Hudson调用mak文件进行夜间构建。我希望某些#ifdef
的值取决于代码是在Eclipse中构建还是在生成文件的外部。我的(C++)代码如何判断它是否在Eclipse中进行编译?
所以,类似#ifdef _Eclipse_
会很好。
为什么要污染你的代码? (澄清:我的意思是编写Eclipse或Hudson特定的代码,只需选择一个更好的宏名称并在Eclipse或Hudson中定义即可。)
我想单独编译目标或者更改构建文件以传递-DECLIPSE或-DHUDSON到预处理器。
,或通过参数进行:
项目属性 - > C/C++编译 - > Build命令:make CFLAGS+=-DECLIPSE
编辑:我不能让+ =在命令行工作。你可能会想尝试,Makefile里:
ifeq ($(BUILT_BY), eclipse)
CFLAGS += -D_Eclipse_
CXXFLAGS += -D_Eclipse_
endif
和修改Eclipse的 'make命令' 这样:make BUILT_BY=eclipse
你可以自己定义_Eclipse_
或其他你在Eclipse上运行的构建。
哎呀!流血'明显地凝视着我的脸! 但它就像是你必须考虑负面情况的那些编码事物之一。 这将工作。谢谢,阿米特 – Mawg 2010-01-20 12:23:30
对不起,伙计,但他的问题是由另一个回答...
加上一个“污染” - 发表另一个评论,我会加上一个。这也正是我对此的感受。 而且你还有其他建议 - 我不知道如何传递-D参数,但从来没有想过通过仅在exlipse中声明它们来默认省略它们。 Thnaks – Mawg 2010-01-20 12:26:19