Hi Roman, I'm not necessarily only talking about CMAKE_CXX_FLAGS here. I define compile flags for my targets in a number of different ways. Like:
find_package( ROOT COMPONENTS ${ROOT_LINK_COMPONENTS} REQUIRED ) include( ${ROOT_USE_FILE} ) ... add_definitions( ${ATLAS_DEFINITIONS} ) ... add_definitions( -Wno-unused-local-typedefs ) if( APPLE ) add_definitions( -Wno-tautological-undefined-compare ) add_definitions( -Wno-inconsistent-missing-override ) endif() ... include_directories( BEFORE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_INCLUDE_OUTPUT_DIRECTORY} ) if( ARG_INCLUDE_DIRS ) target_include_directories( ${libName} PUBLIC ${ARG_INCLUDE_DIRS} ) endif() The trickiest are the definitions that I pull in from external packages. For instance the second line in this example produces a *lot* of duplicate entries in the compilation flags. In this particular case the flags *are* defined like the following in the file that I include with ${ROOT_USE_FILE}: add_definitions(${ROOT_DEFINITIONS}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ROOT_CXX_FLAGS}") Now, CMake definitely doesn't remove the duplicates that enter in all these ways. So now I was wondering what I could do to improve on the situation... Cheers, Attila > On 06 Oct 2015, at 12:58, Roman Bolshakov <rool...@gmail.com> wrote: > > CMake performs deduplication of per-target flags for sure. > > However I'm not sure if CMAKE_CXX_FLAGS is deduplicated. But I consider this > variable as global flags for the whole project which is defined at topmost > CMakeLists.txt. If you need to specify some flags specifically for a target > use target_compile_options. > > — > Sent from Mailbox > > > On Mon, Oct 5, 2015 at 4:23 PM, Attila Krasznahorkay > <attila.krasznahor...@gmail.com> wrote: > > Dear All, > > Let me try a simpler question this time. (I'm a bit disappointed that nobody > had any comments on my question about sub-projects.) > > I'm trying to clean up my project's build a bit. As it collects compilation > flags from a few separate places, by the time it finishes collecting > everything, the compilation commands are usually very long. As they have many > duplications. Like: > > -m64 -pipe -W > -Wall -Woverloaded-virtual -fsigned-char -fno-common -Qunused-arguments > -pthread -std=c++11 -Wno-deprecated-declaration > s -stdlib=libc++ -m64 -pipe -W -Wall -Woverloaded-virtual -fsigned-char > -fno-common -Qunused-arguments -pthread -std=c++ > 11 -Wno-deprecated-declarations -stdlib=libc++ -Wno-unused-local-typedefs > -Wno-tautological-undefined-compare -Wno-incon > sistent-missing-override -m64 -pipe -W -Wall -Woverloaded-virtual > -fsigned-char -fno-common -Qunused-arguments -pthread > -std=c++11 -Wno-deprecated-declarations -stdlib=libc++ -m64 -pipe -W -Wall > -Woverloaded-virtual -fsigned-char -fno-commo > n -Qunused-arguments -pthread -std=c++11 -Wno-deprecated-declarations > -stdlib=libc++ -m64 -pipe -W -Wall -Woverloaded-vi > rtual -fsigned-char -fno-common -Qunused-arguments -pthread -std=c++11 > -Wno-deprecated-declarations -stdlib=libc++ -m64 > -pipe -W -Wall -Woverloaded-virtual -fsigned-char -fno-common > -Qunused-arguments -pthread -std=c++11 -Wno-deprecated-dec > larations -stdlib=libc++ -m64 -pipe -fsigned-char -fno-common > -Qunused-arguments -pthread -std=c++11 -stdlib=libc++ > > Naturally it would help the build log reading tremendously if I could remove > the duplications from these lines. But I can't find a good way of doing it. > How could I weed out all the duplications in the CXXFLAGS associated to a > given target? > > Cheers, > Attila > -- > > Powered by www.kitware.com > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Kitware offers various services to support the CMake community. For more > information on each offering, please visit: > > CMake Support: http://cmake.org/cmake/help/support.html > CMake Consulting: http://cmake.org/cmake/help/consulting.html > CMake Training Courses: http://cmake.org/cmake/help/training.html > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/cmake > > -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake