[CMake] CMAKE_BUILD_TYPE and exact control of compiler options

René J. V. Bertin rjvbertin at gmail.com
Mon Oct 12 04:39:37 EDT 2015


Hello,

I'm using cmake in conjunction with a packaging/distribution system that aims to 
control the compiler and linker flags, a priori via the usual environment 
variables. (We're talking about MacPorts.)

Using one of the CMAKE_BUILD_TYPE presets, the value of those env. variables 
appears at most to be added in front of the preset options, which means user 
options can be overridden. That may be intended behaviour, but not ideal for my 
use case.

Working with Debian and Ubuntu systems, I deduced that using a non-pre-defined 
BUILD_TYPE make cmake use the values of CFLAGS, CXXFLAGS etc, through 
CMAKE_C_FLAGS, CMAKE_CXX_FLAGS etc (instead of CMAKE_C*_FLAGS_RELEASE, for 
instance).

Experimenting with -DCMAKE_BUILD_TYPE=MacPorts in the toplevel control file 
(cmake PortGroup), that appeared indeed to work, but I appear to have been 
mistaken. Adding -DCMAKE_C*_FLAGS_MACPORTS definitions has no effect, nor has 
setting CMAKE_C*_FLAGS from the CMake command line.

Which leads me to the following questions:
- Is it indeed possible to get CMake to take all compiler and linker flags from 
the environment, and if so, how?
- If not, what is the best/official way to get exact control over the compiler 
and linker options used?
- Out of curiosity, what's special about the CMAKE_BUILD_TYPE=Debian build type? 

Thanks
René Bertin



More information about the CMake mailing list