Dea*_*hen 33 boost cmake mongodb
我在我的C++应用程序中使用Mongodb客户端和Boost.因为Mongodb客户端仍在使用Boost旧文件系统,而我的C++应用程序正在使用boost 1.47.0中的文件系统版本3,所以它们会发生冲突.
我找到了解决这个编译问题的方法,即在我的cpp文件中来自Boost的头文件的所有include语句之前添加一个宏定义:
#define BOOST_FILESYSTEM_VERSION 2
Run Code Online (Sandbox Code Playgroud)
但我想知道如何将上面的宏定义放入我的CMake项目文件中.
And*_*dré 53
查看add_definitions,它将您的定义添加到编译器命令行,例如-D使用gcc或/DMSVC.尝试类似的东西:
add_definitions( -DBOOST_FILESYSTEM_VERSION=2 )
Run Code Online (Sandbox Code Playgroud)
在你的情况下,我肯定会使用该add_definition方法,但另一种方法可能是看看configure_file.然后,您可以创建一个头文件模板,该模板将填充cmake-values并将其包含在源文件中.如果您有许多由CMake确定的可配置参数,这将非常有用.
从 CMake 3 开始,有target_compile_definitions来仅为特定目标设置定义。
例子:
target_compile_definitions(your_target_name PUBLIC BOOST_FILESYSTEM_VERSION=2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33507 次 |
| 最近记录: |