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 <da...@zemon.name <mailto:da...@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



-- 

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

Reply via email to