[CMake] Dependency on CONFIGURE_FILE output

Brandon J. Van Every bvanevery at gmail.com
Wed Jul 12 12:22:33 EDT 2006


Patrick Noffke wrote:
>
>   
>
> Indeed, I use CONFIGURE_FILE() to replace paths to tools and source files in an XML file.  I'm using WiX to make a windows installer package, and this required an XML file to describe the project.  I need to package things like Qt DLLs, my applications translation files, and other components whose paths I do not know until build time.
>
> Is there a better way to solve such a problem on Windows?
>   

Do your substitutions at build time with a CMake script.  Example:

in your CMakeLists.txt:

ADD_CUSTOM_TARGET(configure
  DEPENDS ${MY_DEPS}
  # Note that -P must be the last flag, or the -D flags won't work.
  COMMAND ${CMAKE_COMMAND} -DChicken_SOURCE_DIR=${Chicken_SOURCE_DIR} -P 
${Chicken_SOURCE_DIR}/replace.cmake
)

in a file replace.cmake:

FILE(READ ${Chicken_SOURCE_DIR}/configure.in input)
STRING(REPLACE "%pkgdatadir%" "${INSTALL_HOME}" input "${input}")
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/csc.scm "${input}")

I pass Chicken_SOURCE_DIR because a CMake script has no knowledge or 
context of the caller's variables.  The only thing it does know is 
CMAKE_CURRENT_BINARY_DIR, the directory in which it was invoked.  The 
lack of context is actually useful in some instances, like resolving a 
circular compiler bootstrap dependency.


Cheers,
Brandon Van Every

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/cmake/attachments/20060712/5f0ef1f8/attachment.html


More information about the CMake mailing list