#define 在 Boost Jamfiles 中
#define in Boost Jamfiles
这是我的项目结构:
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 ;
在我之前的项目中,我们使用不同的调试模式编译 - 除了添加调试符号外,它还用于在 运行 时间内打印许多有用的值。
完成方式
#ifdef DEBUG
/* Piece of code here*/
#endif
并且在使用 -DDEBUG 通过 GCC 进行编译时
添加预处理器定义使用 "define" 功能,如您在示例中所见。但是该功能需要指定为 requirement of the target definition. The requirements 被指定为目标定义的第三个参数,而不是您的用例中的第四个参数。因此,而不是:
lib
libname # main-target-name
: [ glob *.cpp ] # sources
: <link>static # requirements
: <define>SOMEVALUE # default-build
;
您需要将“”从使用要求移动到目标要求:
lib
libname # main-target-name
: [ glob *.cpp ] # sources
: <link>static <define>SOMEVALUE # requirements
: # default-build
: # usage-requirements
;
您可以找到目标定义的所有参数是什么 here。
这是我的项目结构:
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 ;
在我之前的项目中,我们使用不同的调试模式编译 - 除了添加调试符号外,它还用于在 运行 时间内打印许多有用的值。 完成方式
#ifdef DEBUG
/* Piece of code here*/
#endif
并且在使用 -DDEBUG 通过 GCC 进行编译时
添加预处理器定义使用 "define" 功能,如您在示例中所见。但是该功能需要指定为 requirement of the target definition. The requirements 被指定为目标定义的第三个参数,而不是您的用例中的第四个参数。因此,而不是:
lib
libname # main-target-name
: [ glob *.cpp ] # sources
: <link>static # requirements
: <define>SOMEVALUE # default-build
;
您需要将“
lib
libname # main-target-name
: [ glob *.cpp ] # sources
: <link>static <define>SOMEVALUE # requirements
: # default-build
: # usage-requirements
;
您可以找到目标定义的所有参数是什么 here。