I am using Mongodb client and Boost in my C++ application. 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.
You can use the command line to set entries in the Cache with the syntax cmake -D var:type=value , just cmake -D var=value or with cmake -C CMakeInitialCache. cmake .
In computer science, a preprocessor (or precompiler) is a program that processes its input data to produce output that is used as input to another program. The output is said to be a preprocessed form of the input data, which is often used by some subsequent programs like compilers.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With