[CMake] Settings different flags in sub projects

David Zemon david at zemon.name
Mon Aug 4 19:48:13 EDT 2014


Poking around some more I think I may have found a better solution.

    # Toolchain file
    include(FileWithInitFlags.cmake)
    set(CMAKE_C_COMPILE_OBJECT
    "<CMAKE_C_COMPILER> <DEFINES> <FLAGS> ${CMAKE_C_FLAGS_INIT} -o
    <OBJECT> -c <SOURCE>")

And for the custom languages I can add that to 
CMake<Lang>Information.cmake. I'm not sure why I didn't think of this 
earlier - I think just sparking off Glenn or getting some sleep helped :P

Cheers,
David

On 08/04/2014 05:09 PM, Glenn Coombs wrote:
> Something like this should work:
>
> add_compile_options(-std=c99)
>
> set_property(DIRECTORY "/root/p1" PROPERTY COMPILE_OPTIONS "-Os")
> set_property(DIRECTORY "/root/p2" PROPERTY COMPILE_OPTIONS "-O1")
>
>
> or you just use the add_compile_options command in all 3 CMakeLists.txt files.  The CMakeLists.txt files in root/p1 and root/p2 will inherit the compile options set in the parent root/CMakeLists.txt file.
>
>
> --
> Glenn
>
>
> On 3 August 2014 23:46, David Zemon <david at zemon.name 
> <mailto:david at zemon.name>> wrote:
>
>     Hello,
>
>     For the simple case of three directories and two projects - /root,
>     /root/p1, and /root/p2 - I would like to set some common flags for
>     both projects and then other flags should be independent. For
>     instance, p1 should be compiled with "-std=c99 -Os" and p2 should
>     be compiled with "-std=c99 -O1". The first flag, -std=c99, is
>     common to all projects and the second, -Os, might be changed from
>     project to project. How do I do this?
>
>     I thought I could create MyRulesOverride.cmake with the content:
>
>         set(CMAKE_C_FLAGS_INIT "-std=c99")
>
>     And that would be the end of it, but apparently not. The
>     CMakeLists.txt files in each project have a line such as "
>     set(CMAKE_C_FLAGS "-Os")" which is apparently overwriting the
>     cached value from CMakeCInformation.cmake. I can't write a line
>     like "set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Os")" because then the
>     result is "-std=c99 -std=c99 -Os" for the second project.
>
>     Any help would be greatly appreciated.
>
>     David
>
>     --
>
>     Powered by www.kitware.com <http://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
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20140804/c20fa1b8/attachment.html>


More information about the CMake mailing list