这是我的项目结构:
MainFolder
- Jamroot.jam
- AnotherFolder
- libFolder
- Jamfile.jam
- cpp files
我在其中一个cpp文件中有#ifdef。 例如:
#ifdef SOMEVALUE
Code
#endif
我需要在Jamfile中使用#define编译cpp文件。因为,我有两种类型的可执行文件(一个使用#define,一个没有),我需要在Jamfile本身而不是cpp代码中执行此操作。
我尝试过以下操作,但无效(无法在#ifdef #endif块中找到定义):
lib libname : [ glob *.cpp ] : <link>static : <define>SOMEVALUE ;
答案 0 :(得分:6)
添加预处理器定义使用&#34; define&#34;你已经看到了你的例子。但是该功能需要指定为目标定义的requirement。 requirements被指定为目标定义的第三个参数,而不是用例中的第四个参数。因此,而不是:
lib
libname # main-target-name
: [ glob *.cpp ] # sources
: <link>static # requirements
: <define>SOMEVALUE # default-build
;
您需要移动&#34;&lt; define&gt;&#34;从使用要求到目标要求:
lib
libname # main-target-name
: [ glob *.cpp ] # sources
: <link>static <define>SOMEVALUE # requirements
: # default-build
: # usage-requirements
;
您可以找到目标定义的所有参数都是here。
答案 1 :(得分:0)
在我早期的项目中,我们使用不同的编译进行调试 - 除了添加调试符号之外,还可以在运行时打印许多有用的值。 它的方式
#ifdef DEBUG
/* Piece of code here*/
#endif
使用-DDEBUG
通过GCC进行编译