如何在cmake中添加宏的定义?

时间:2011-07-21 03:03:05

标签: boost mongodb cmake

我在我的C ++应用程序中使用Mongodb客户端和Boost。因为Mongodb客户端仍在使用Boost旧文件系统,而我的C ++应用程序正在使用boost 1.47.0中的文件系统版本3,所以它们会发生冲突。

我找到了解决这个编译问题的方法,即在我的cpp文件中来自Boost的头文件的所有include语句之前添加一个宏定义:

#define BOOST_FILESYSTEM_VERSION 2

但我想知道如何将上面的宏定义放入我的CMake项目文件中。

1 个答案:

答案 0 :(得分:48)

查看add_definitions,它会将您的定义添加到编译器命令行,例如使用gcc -D或使用MSVC /D。尝试类似:

add_definitions( -DBOOST_FILESYSTEM_VERSION=2 )

在你的情况下,我肯定会使用add_definition方法,但另一种选择可能会看一下configure_file。然后,您可以创建一个头文件模板,该模板将填充cmake-values并将其包含在源文件中。如果您有许多由CMake确定的可配置参数,这将非常有用。