[cmake-developers] [CMake 0013008]: CFLAGs set in toolchain file are overwritten

Mantis Bug Tracker mantis at public.kitware.com
Thu Mar 1 21:27:50 EST 2012


The following issue has been SUBMITTED. 
====================================================================== 
http://www.cmake.org/Bug/view.php?id=13008 
====================================================================== 
Reported By:                David Coles
Assigned To:                
====================================================================== 
Project:                    CMake
Issue ID:                   13008
Category:                   CMake
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     new
====================================================================== 
Date Submitted:             2012-03-01 21:27 EST
Last Modified:              2012-03-01 21:27 EST
====================================================================== 
Summary:                    CFLAGs set in toolchain file are overwritten
Description: 
It's possible to set common CMAKE variables in a toolchain file with the
assumption that they'll be used in external builds. This would be the ideal
location for toolchain specific compiler flags, but unfortunately these are
overwritten after the toolchain testing is complete.

A workaround[1] is to set the CFLAGS to the CMAKE Cache using something like
`SET(CMAKE_C_FLAGS "-Wall" CACHE STRING "Toolchain")` but this breaks the use of
CFLAGS environment variable.

[1] http://www.mail-archive.com/cmake@cmake.org/msg40214.html

Steps to Reproduce: 
# Toolchain.cmake
# ===============
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_VERSION 1)

set( CLANG True )

# Set the cross compiler
set(CMAKE_C_COMPILER clang)
set(CMAKE_CXX_COMPILER clang++)

set(CMAKE_C_FLAGS "-Wextra")
#set(CMAKE_C_FLAGS "-Wextra" CACHE STRING "Toolchain")
set(MY_C_FLAGS "-Wextra")
MESSAGE(STATUS "Toolchain CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}")
MESSAGE(STATUS "Toolchain MY_C_FLAGS: ${MY_C_FLAGS}")



# CMakeLists.txt
# ==============
PROJECT (Test)
CMAKE_MINIMUM_REQUIRED (VERSION 2.8)

# Expect that toolchain variables are still set
MESSAGE (STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}")
MESSAGE (STATUS "MY_C_FLAGS: ${MY_C_FLAGS}")


# Command Line
# ============
$ rm CMakeCache.txt; cmake -DCMAKE_TOOLCHAIN_FILE=Toolchain.cmake .
====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2012-03-01 21:27 David Coles    New Issue                                    
======================================================================




More information about the cmake-developers mailing list