Boost Jamfiles中的#define

时间:2016-10-03 07:56:02

标签: c++ boost bjam

这是我的项目结构:

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 ;

2 个答案:

答案 0 :(得分:6)

添加预处理器定义使用&#34; define&#34;你已经看到了你的例子。但是该功能需要指定为目标定义的requirementrequirements被指定为目标定义的第三个参数,而不是用例中的第四个参数。因此,而不是:

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进行编译