Martin Apel wrote:
Mike Jackson wrote:
typically, the PROJECT() statement is the first line of your CMakeLists.txt. Could you explain your project layout a bit more?


I found out, that CMAKE_CXX_FLAGS is set to the compound of $ENV{CXXFLAGS} and the platform-specific default at the time, the PROJECT statement is executed. In order to preset CMAKE_CXX_FLAGS I tried to set $ENV{CXXFLAGS} from within the CMakeFile. Thus this setting has to be done before the PROJECT statement, otherwise
CMAKE_CXX_FLAGS is already set. So I tried to include an external file by
INCLUDE (${CMAKE_SYSTEM_NAME}.cmake)
before the PROJECT statement. This doesn't work, because ${CMAKE_SYSTEM_NAME} is not set at that time.

When setting CMAKE_CXX_FLAGS after the PROJECT statement, the CMake-local variable is set correctly, but the cache is not updated. The situation I tried to achieve, was to preset the cache variable CMAKE_CXX_FLAGS to include certain compiler flags. If the user looked at the cache e.g. by using ccmake, he would also see and be able to edit those additional flags. By setting the flags later, you only change the CMake-local variable, but never the cache value, which is somewhat irritating, because the compile happens with other flags than can be seen using
ccmake.

You want to use this variable:
CMAKE_USER_MAKE_RULES_OVERRIDE

You can set that to a file that will be loaded at the right time so you can set the cache variables yourself.

-Bill
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to