On 8. Oct, 2010, at 10:50 , Rolf Eike Beer wrote: > Hi, > > I have a problem with ExternalProject and how to depend on that. I'm not > absolutely sure I got the CMakeLists.txt right, so I first ask here before > filing a bug report. > > The idea is like this: we have an project that generates a couple of > files. In a special configuration of another project we need those files > as input for a special build step. Those step will take those files, > mangle them and will generate a source file at the end. This is then added > as usual to a library (in my example below to a executable, but that > doesn't matter). When I run the example below I get: > > [ 80%] Built target Subdir_Build > make[2]: *** No rule to make target `Subdir_Build', needed by `main.c'. > Stop. > > I've tested this with 2.8.2 and 2.8.3-rc2. > > Put this into CMakeLists.txt > === snip === > PROJECT(MaindirThing C) > > CMAKE_MINIMUM_REQUIRED(VERSION 2.8.2) > > INCLUDE(ExternalProject) > > ExternalProject_Add(Subdir_Build > PREFIX "${CMAKE_CURRENT_BINARY_DIR}/build_subdir" > SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/subdir" > CMAKE_ARGS > "-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/build_subdir/install" > INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/build_subdir/install" > ) > > ADD_CUSTOM_COMMAND( > OUTPUT "main.c" > COMMAND ${CMAKE_COMMAND} > ARGS -E copy ${CMAKE_CURRENT_BINARY_DIR}/build_subdir/install/foo > ${CMAKE_CURRENT_BINARY_DIR}/main.c > DEPENDS Subdir_Build > ) > > ADD_EXECUTABLE(simple_exe main.c) > === snap === > > And this goes to subdir/CMakeLists.txt > === snip === > PROJECT(SubdirThing NONE) > > CMAKE_MINIMUM_REQUIRED(VERSION 2.6) > > FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/foo_file "int main(void)\n{\n > return 0;\n}\n") > > INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/foo_file DESTINATION .) > === snap === > > Side note: I would have expected that CMAKE_INSTALL_PREFIX is set to > INSTALL_DIR if the external project is a cmake one. > > Eike
Hi Eike Subdir_Build is a top-level target, and the custom-command can only depend on files. You need to add a custom target that depends on main.c and then add a dependency of that custom target on Subdir_Build. HTH Michael -- There is always a well-known solution to every human problem -- neat, plausible, and wrong. H. L. Mencken _______________________________________________ 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