[CMake] Portable preprocessor defines?
Bill Hoffman
bill.hoffman at kitware.com
Fri Nov 21 21:37:08 EST 2008
Robert Dailey wrote:
> Hi,
>
> I want to define a preprocessor directive through CMakeLists.txt,
> however the only documented method of doing this that I see is
> *add_definitions()*. Is there a better way of doing this? According to
> the documentation this isn't 100% portable, which in my opinion defeats
> the entire purpose of using CMake to begin with (Or at the very least
> that function itself). I don't think it is right to have to specify -D.
> I should be able to do:
>
> add_definitions( BOOST_ALL_NO_LIB )
>
> However, I have to do:
>
> add_definitions( -DBOOST_ALL_NO_LIB )
>
> Any help would be greatly appreciated.
>
>
We have yet to find a compiler that does not support -D. However, it
seems unportable. In cmake 2.6 we added properties on directories and
targets that do not have the -D:
http://www.cmake.org/cmake/help/cmake2.6docs.html#prop_dir:COMPILE_DEFINITIONS
http://www.cmake.org/cmake/help/cmake2.6docs.html#prop_tgt:COMPILE_DEFINITIONS
That said, in doing that cmake parses add_definitions for -D and turns
it into one of those properties anyway. So, both are equally compiler
portable at this point should we ever see a compiler that does not use -D...
-Bill
More information about the CMake
mailing list