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 <o...@wanadoo.es> 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