[CMake] This has to have been asked before...

Michael Wild themiwi at gmail.com
Mon Mar 8 14:35:25 EST 2010


What I did is define custom functions that wrap add_executable, add_library and target_link_libraries. Works like a charm ;-)


Michael

On 8. Mar, 2010, at 20:33 , David Cole wrote:

> It is presently not possible to iterate over all the targets in
> CMakeLists.txt unless you maintain your own list of targets. It would be a
> good feature request to provide the full list of CMake targets using:
> 
> get_cmake_property(var TARGETS)                             # for all
> targets from top level all the way down
>  or
> get_property(var GLOBAL CMAKE_TARGETS ...           # for all targets from
> top level all the way down
>  or
> get_property(var DIRECTORY CMAKE_TARGETS ...       # for targets just in the
> current directory
> 
> 
> However, presently, nothing like this is implemented. Wouldn't be too hard,
> just hasn't been done yet.
> 
> 
> HTH,
> David
> 
> 
> On Mon, Mar 8, 2010 at 2:11 PM, Oliver Smith <osmith at playnet.com> wrote:
> 
>> On 3/6/2010 8:04 PM, J Decker wrote:
>> 
>> there is a foreach() operator...
>> 
>> 
>> Well, thanks for trying, but what I actually want to know is how to add
>> something to all the current targets *automatically* - as in without
>> specifying them by hand, and how to get the compiler flags etc of a
>> particular target so that I can *generate* a custom command that matches
>> the given target.
>> 
>>    get_file_component(pchbase ${PrecompiledHeader} NAME_WE)
>>    get_file_component(pchpath ${PrecompiledHeader} PATH)
>> 
>> *    foreach ( target in LISTS CMAKE_TARGET_LIST )*
>> 
>>        set(pchname "${CMAKE_BINARY_DIR}/${pchbase}.${target}.h")
>> 
>>        get_target_properties(defines ${target} COMPILE_DEFINITIONS)
>>        get_target_properties(flags ${target} COMPILE_FLAGS)
>>        set_target_properties(${target} PROPERTIES COMPILE_FLAGS "${flags}
>> -include ${pchname} -Winvalid-pch")
>> 
>>        add_custom_command(${target} PRE_BUILD COMMAND
>>            "ln -s ${pchname} ${PrecompiledHeader}"
>>            "g++ ${defines} ${flags} -o ${pchname}.gch ${pchname}")
>>        )
>>    endforeach ()
>> 
>> Marked in bold is the part I'm struggling with.
>> 
>> - Oliver
>> 
>> 
>> _______________________________________________
>> 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



More information about the CMake mailing list