Don't use add_definitions for stuff that aren't "definitions" --
add_definitions should only be used for -D flags to the compiler. It
is a long-standing accidental side effect that you can pass compiler
flags through there, but you shouldn't. Instead, as John already
pointed out in his reply, you should manipulate CMAKE_CXX_FLAGS(_*)
variables (and possibly the _C_ variants as well).
Something like this (sample CMakeLists.txt file) -- see the bottom for
replacing the "/EHsc" with "/EHs-c-" :
cmake_minimum_required(VERSION 2.8)
project(ShowCxxFlags)
message(STATUS "One of the following *should* be empty:")
message(STATUS "CMAKE_CONFIGURATION_TYPES='${CMAKE_CONFIGURATION_TYPES}'")
message(STATUS "CMAKE_BUILD_TYPE='${CMAKE_BUILD_TYPE}'")
message(STATUS " (but if not, CMAKE_BUILD_TYPE is only used by
Makefile generators)")
message(STATUS "")
message(STATUS "CMAKE_CXX_FLAGS always applies:")
message(STATUS "CMAKE_CXX_FLAGS='${CMAKE_CXX_FLAGS}'")
message(STATUS "")
if(CMAKE_BUILD_TYPE)
if(CMAKE_GENERATOR MATCHES "Make")
message(STATUS "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE} applies:")
message(STATUS
"CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}='${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}'")
message(STATUS "")
endif()
endif()
if(CMAKE_CONFIGURATION_TYPES)
message(STATUS "One of the following applies, based on user's choice
of 'Configuration' at build time:")
foreach(cfg ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER "${cfg}" UCFG)
message(STATUS "CMAKE_CXX_FLAGS_${UCFG}='${CMAKE_CXX_FLAGS_${UCFG}}'")
endforeach()
message(STATUS "")
endif()
if(CMAKE_CXX_FLAGS MATCHES "/EHsc ")
string(REPLACE "/EHsc" "/EHs-c-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
message(STATUS "CMAKE_CXX_FLAGS matches /EHsc before end of string
-- replaced...")
message(STATUS "")
endif()
if(CMAKE_CXX_FLAGS MATCHES "/EHsc$")
string(REPLACE "/EHsc" "/EHs-c-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
message(STATUS "CMAKE_CXX_FLAGS matches /EHsc at end of string --
replaced...")
message(STATUS "")
endif()
message(STATUS "CMAKE_CXX_FLAGS after possible REPLACE operation:")
message(STATUS "CMAKE_CXX_FLAGS='${CMAKE_CXX_FLAGS}'")
message(STATUS "")
On Fri, Dec 31, 2010 at 9:27 AM, Óscar Fuentes <[email protected]> wrote:
> If /EHs- /EHs-c- are added with add_definitions, the output of the build
> contains warnings:
>
> cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
> cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
>
> This is because cmake automatically adds /EHsc to the command line
> options.
>
> How can I remove /EHsc from the command line options before adding
> /EHs-c- ?
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake