Glenn, thanks for the tip. Those two options are new to me.

It's not very clear to me how the add_compile_options function works. Complexity might be added when I mention that I've also defined 4 new custom languages (all essentially identical to C). When add_compile_options is executed, will it add the flags to all languages (that would be desirable in my case)? What about assembly (that would be undesirable but I don't think detrimental)?

If I use the "header guard" concept, could I just tack that add_compile_options line onto my ToolChain file? That would save trouble for users of my library so that they don't have to define all the basics in every one of their projects.

Can I assume that set_property(DIRECTORY "..." PROPERTY COMPILE_OPTIONS "...") affects the same variables as add_compile_options?

Thank you,
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