[CMake] Problem copying generated files in an out-of-source build

Anatoly Shirokov shirokov_a at mail.ru
Fri Sep 25 00:25:16 EDT 2009


May be it helps:

generated/CMakeLists.txt:

project (generated)

add_custom_command(...)
...
depends_on_generated/CMakeLists.txt:

project(depends_on_generated)
...
# add the generated binary dir to the search paths
include_directories(${generated_BINARY_DIR})
...

BR, Anatoly

Eric Tellefsen:
>
> I am having some trouble with the following.
>
> I have a static library project which has a tree structure of the main 
> directory and a group of sub directories.  The main project has a 
> CMakeLists.txt file as well as the sub directories.  Each of the sub 
> directories CMakeLists.txt file generates .cpp & .h files from a .wsdl 
> file via calls to gSoap executables.  When make is run, all the sub 
> directory files are generated into the respective 
> CMAKE_CURRENT_BINARY_DIR locations, and then compiled by the project 
> level generated Makefile.  All of this works fine.
>
> My seemingly simple problem is as follows.  This library and all of 
> the others being used by my group, I have just converted to CMake and 
> am using out-of-source builds.  Another library depends on the WSDL 
> (mentioned above) sub directories for header files which are generated 
> into CMAKE_CURRENT_BINARY_DIR.  Unfortunately this inter-library 
> dependency is looking to the CMAKE_CURRENT_SOURCE_DIR.  When this 
> library builds out-of-source, it cannot find  these headers and the 
> compile fails.
>
> My short-term solution was to copy these files from the respective 
> BINARY to SOURCE directories using a custom command.  This does not 
> seem to work and I cannot understand why.  I've put this code into 
> both the master CMakeLists.txt  as well as the specific subdirectory 
> CMakeLists.txt file.
>
> Am I taking the wrong approach?  Is my syntax for the custom command 
> incorrect?  I'm stumped and could use some suggestions from the group.
>
> Thanks
>
> Eric
>
> Custom command is below
>
> macro( GenericFileCopy Filename FromDir ToDir )
>
> ADD_CUSTOM_COMMAND(
>         OUTPUT  ${ToDir}/${Filename}
>         COMMAND ${CMAKE_COMMAND} -E chdir ${FromDir} cp ${Filename} 
> ${ToDir}
>         DEPENDS ${FromDir}/${Filename}
>         COMMENT "Copying ${FromDir}/${Filename} to ${ToDir}"
>         )
> endmacro( GenericFileCopy )
>
> ---
> This communication may contain confidential and/or privileged information.
> If you are not the intended recipient (or have received this communication
> in error) please notify the sender immediately and destroy this
> communication. Any unauthorized copying, disclosure or distribution of the
> material in this communication is strictly forbidden.
>
> Deutsche Bank does not render legal or tax advice, and the information
> contained in this communication should not be regarded as such.
> ------------------------------------------------------------------------
>
> _______________________________________________
> 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