Search code examples
ccmakendebug

cmake ignores -D CMAKE_BUILD_TYPE=Debug


I'm just trying to build a cmake project in debug-mode to enable asserts. I tried the following versions:

cmake -D CMAKE_BUILD_TYPE:STRING=Debug -L ../../
cmake -DCMAKE_BUILD_TYPE:STRING=Debug -L ../../
cmake -DCMAKE_BUILD_TYPE=Debug -L ../../

Unfortunately none of theese has the desired effect - that CMAKE_BUILD_TYPE is set to Debug (and therefore the NDEBUG-flag is not passed to gcc).

Additionally I added variable_watch(CMAKE_BUILD_TYPE) to my main CMakeLists.txt to check whether the value get's overridden somewhere. But the first output is a READ_ACCESS in my main Additionally I added variable_watch(CMAKE_BUILD_TYPE) to my main CMakeLists.txt and the value there already is Release.

Does someone have an idea why cmake ignores the configuration?

I'm using cmake version 2.8.7.


Solution

  • Ok, fgrep -R "CMAKE_BUILD_TYPE" finally found the problem for me. In some CMakeLists.txt-file I found something like that:

    SET( CMAKE_BUILD_TYPE Release ... FORCE )
    

    That overrides every user defined parameters (because of the FORCE).

    What works for me is that:

    IF( NOT CMAKE_BUILD_TYPE )
       SET( CMAKE_BUILD_TYPE Release ... FORCE )
    ENDIF()
    

    Thank's for your hints!