Say your project is called foo, you could do something like this: # Mark variables to be included in the cache-init script # The variables must already exist in the cache. function(foo_add_cache_init_vars) get_property(is_defined GLOBAL PROPERTY FOO_CACHE_INIT_VARIABLES DEFINED) if(NOT is_defined) define_property(GLOBAL PROPERTY FOO_CACHE_INIT_VARIABLES BRIEF_DOCS "Variables to be written to the cache initialization script" FULL_DOCS "The variables will be used to initialize external projects" ) endif() set_property(GLOBAL APPEND PROPERTY FOO_CACHE_INIT_VARIABLES ${ARGN}) endif()
# Write the cache initializer script function(foo_write_cache_init_script outfile) get_property(is_set GLOBAL PROPERTY FOO_CACHE_INIT_VARIABLES SET) if(NOT is_set) message(FATAL_ERROR "You must call foo_add_cache_init_var before calling this function") endif() get_property(varnames GLOBAL PROPERTY FOO_CACHE_INIT_VARIABLES) set(text "# Automatically generated, do not edit!\n") foreach(var IN LISTS varnames) get_property(vartype CACHE ${var} PROPERTY TYPE) get_property(varhelp CACHE ${var} PROPERTY HELPSTRING) set(text "${text}set(${var} \"${${var}}\" CACHE ${vartype} \"${varhelp}\")\n") endforeach() file(WRITE "${outfile}" "${text}") endfunction() # here goes the real stuff foo_add_cache_init_vars( CMAKE_C_COMPILER CMAKE_CXX_COMPILER CMAKE_OSX_ARCHITECTURES CMAKE_OSX_DEPLOYMENT_TARGET CMAKE_OSX_SYSROOT CMAKE_VERBOSE_MAKEFILE # ... ) foreach(config "" _DEBUG _RELEASE _MINSIZEREL _RELWITHDEBINFO) foo_add_cache_init_vars( CMAKE_C_FLAGS${config} CMAKE_CXX_FLAGS${config} CMAKE_MODULE_LINKER_FLAGS${config} CMAKE_SHARED_LINKER_FLAGS${config} # ... ) endforeach() foo_write_cache_init_script("${CMAKE_BINARY_DIR}/ExternalCacheInitScript.cmake") I haven't tested it, but something along these lines should work. HTH Michael On 19. Mar, 2010, at 15:11 , Nicola Brisotto wrote: > Hi, > the solution with a master CMakeLists.txt works well but now I don't > know how to write wrapper for OPTION and SET functions, can you give > me an example? > I'm quite new to cmake so another question is: > what is the diffence between create a xxx-config and the file I create > with INSTALL(EXPORT QXmppClient DESTINATION include/QXmppClient ) ? > They seem to do the same thing but probably I'm missing something.... > > Nicola Brisotto > > > > On Wed, Mar 17, 2010 at 8:44 PM, Alexander Neundorf > <a.neundorf-w...@gmx.net> wrote: >> On Wednesday 17 March 2010, Michael Wild wrote: >>> On 17. Mar, 2010, at 15:43 , Luigi Calori wrote: >> ... >>>> Is this ExternalProject_Add feature really used/developed? I find it >>>> really nice but a little scared of weather it will be really supported >>>> and improved. I have done some patching on it but not know if there is a >>>> group of user/developer eventually interested to submit mods to >>> >>> It is actively used and developed, but also relatively new. If you have >>> improvements, it's best to create a tracker item with a patch and >>> description there and post the link to the item on this list. >> >> Yes. And git support for it would be a really nice thing to have :-) >> >> Alex >> _______________________________________________ >> 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