Thanks, that seems to work. I'm getting around to testing the windows version of this, we have a command line arg: "-UUNICODE" which explicitly removes a manifest constant. I assume that should be in a set(...) rather than an add_definitions(...) correct?
The defines for __x86__ and __linux__ are required for the omnithread library which we use, and the gcc -W option is the old name for -Wextra. Thanks, -Kelly On Mon, Jul 25, 2011 at 8:40 AM, Michael Wild <them...@gmail.com> wrote: > On 07/25/2011 03:20 PM, Kelly Burkhart wrote: >> Hi, I have a bunch of compiler flags specified with add_definitions as so: >> >> if(LINUX) >> tb_compiler_version(TB_GCC_VERSION) >> add_definitions(${CMAKE_CXX_FLAGS} "-g") >> add_definitions(${CMAKE_CXX_FLAGS} "-DBOOST_SIGNALS_NAMESPACE=tb_signals") >> add_definitions(${CMAKE_CXX_FLAGS} "-D__x86__") >> add_definitions(${CMAKE_CXX_FLAGS} "-D__linux__") >> add_definitions(${CMAKE_CXX_FLAGS} "-D__OSVERSION__=2") >> add_definitions(${CMAKE_CXX_FLAGS} "-D_REENTRANT") >> add_definitions(${CMAKE_CXX_FLAGS} "-Wall") >> add_definitions(${CMAKE_CXX_FLAGS} "-Wno-unused") >> add_definitions(${CMAKE_CXX_FLAGS} "-Wno-comment") >> add_definitions(${CMAKE_CXX_FLAGS} "-Wno-sign-compare") >> >> if("${TB_GCC_VERSION}" VERSION_GREATER "4.2") >> add_definitions(${CMAKE_CXX_FLAGS} "-fno-strict-aliasing") >> endif() >> >> if("${TB_GCC_VERSION}" VERSION_GREATER "4.3") >> add_definitions(${CMAKE_CXX_FLAGS} "-Wno-ignored-qualifiers") >> add_definitions(${CMAKE_CXX_FLAGS} "-Wnon-virtual-dtor") >> endif() >> >> add_definitions(${CMAKE_CXX_FLAGS} "-W") >> else() >> ... >> >> The CXX flags are applied to C compiles which is mostly what I want, >> but there are some options (-Wnon-virtual-dtor for instance) that only >> apply to C++. How can I specifiy an option should only be applied to >> C++ but not to C? >> >> Thanks, >> >> -Kelly > > For one, your are completely misusing add_definitions(). You should only > use it for -D flags, nothing else, and only if the definitions apply to > *all* files in that directory. If > > 1) the definitions should only be applied to some source files or some > targets, use the COMPILE_DEFINITIONS source/target property. See the > set_source_files_properties() and the set_target_properties() commands. > > 2) you want to set other compile flags, either append to the > CMAKE_CXX_FLAGS *variable* using the set() command, e.g. > set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") if you want this flag to > be applied to everything that follows (including sub-directories), or > use the COMPILE_FLAGS source file or target property (see point 1). > > > Also, it doesn't make sense to pass the CMAKE_CXX_FLAGS variable to > add_definitions(). Lastly, you can pass definitions using a single call, > e.g. add_definitions(-DFOO -DBAR -DBAZ). > > So, your code might look something like the following: > > if(LINUX) > tb_compiler_version(TB_GCC_VERSION) > # TB_C_FLAGS will be also used for C++ > set(TB_C_FLAGS "-g -Wall -Wno-unused") > set(TB_C_FLAGS "${TB_C_FLAGS} -Wno-comment -Wno-sign-compare") > add_definitions( > -DBOOST_SIGNALS_NAMESPACE=tb_signals # Doesn't hurt in C files > -D__x86__ # ARE YOU SURE?! > -D__linux__ # ARE YOU SURE?! > -D__OSVERSION__=2 > -D_REENTRANT > ) > > if("${TB_GCC_VERSION}" VERSION_GREATER "4.2") > set(TB_C_FLAGS "${TB_C_FLAGS} -fno-strict-aliasing") > endif() > > if("${TB_GCC_VERSION}" VERSION_GREATER "4.3") > set(TB_C_FLAGS "${TB_C_FLAGS} -Wno-ignored-qualifiers") > set(TB_CXX_FLAGS "${TB_CXX_FLAGS} -Wnon-virtual-dtor") > endif() > > # What's this? > # add_definitions(${CMAKE_CXX_FLAGS} "-W") > > # now, assign TB_<LANG>_FLAGS to CMAKE_<LANG>_FLAGS > set(CMAKE_C_FLAGS "${TB_C_FLAGS}") > set(CMAKE_CXX_FLAGS "${TB_C_FLAGS} ${TB_CXX_FLAGS}") > else() > _______________________________________________ > 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