开发者

How to add macro's definition in cmake?

开发者 https://www.devze.com 2023-03-22 07:27 出处:网络
I am using Mongodb client and Boost in my C++ applic开发者_运维百科ation. Because the Mongodb client is still using Boost old filesystem and my C++ application is using filesystem version 3 from boost

I am using Mongodb client and Boost in my C++ applic开发者_运维百科ation. Because the Mongodb client is still using Boost old filesystem and my C++ application is using filesystem version 3 from boost 1.47.0, they conflict.

I found a way to solve this compilation problem, namely add a macro definition before all include statements for the header files from Boost in my cpp files:

#define BOOST_FILESYSTEM_VERSION 2

But I want to know how to put the above macro's definition into my CMake project files.


Take a look at add_definitions, which will add your definitions to your compiler command line, e.g. -D with gcc, or /D with MSVC. Try something like:

add_definitions( -DBOOST_FILESYSTEM_VERSION=2 )

In your case, I would definitely go with the add_definition method, but an alternative may to take a look at configure_file. Then you can create a header-file template, which will be filled with cmake-values and include this in your source files. This can be useful if you have many, many configurable parameters which are determined by CMake.


Since CMake 3 there's target_compile_definitions to set defines for specific target only.

Example:

target_compile_definitions(your_target_name PUBLIC BOOST_FILESYSTEM_VERSION=2)
0

精彩评论

暂无评论...
验证码 换一张
取 消