> Sigh, now I sent you the code from the wrong directory, but the code for > the "Backend" component is virtually identical. I don't know how to use > functions with CMake, so I simply made a verbatim copy of the below code > in > each subfolder and edited it to match the subfolder. So the Backend > project looks like this: > > project(Backend) > > set(PublicHeaders > "Backend.hpp" > "Context.hpp" > ) > set(PublishedHeaders "") > foreach(Header IN LISTS PublicHeaders) > get_filename_component(HeaderFilename "${Header}" NAME) > set(Source "${CMAKE_CURRENT_SOURCE_DIR}/${Header}") > set(Output "${CMAKE_CURRENT_BINARY_DIR}/${HeaderFilename}") > list(APPEND PublishedHeaders "${Output}") > add_custom_command( > OUTPUT "${Output}" > COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${Source}" > "${Output}" > MAIN_DEPENDENCY "${Source}" > COMMENT "Publishing ${HeaderFilename}" > VERBATIM > )
Why don't you simply use configure_file(... COPYONLY) here? > endforeach() > add_custom_target( > publish_backend_headers > ALL > DEPENDS ${PublishedHeaders} > SOURCES ${PublicHeaders} > ) > include_directories("${CMAKE_BINARY_DIR}/../") This is almost certainly wrong. Guess my build dir is /tmp/foo, why on earth do you want to include /tmp? I could understand if it would be ${CMAKE_CURRENT_BINARY_DIR}/.. if you are in a subdirectory, but otherwise this is likely completely bogus. > include_directories("$ENV{LLVM}/include") > > add_definitions(-D__STDC_CONSTANT_MACROS) > add_definitions(-D__STDC_LIMIT_MACROS) > > add_library(Backend > "Backend.cpp" > ) > > add_dependencies(Backend publish_backend_headers) I think you can avoid the whole add_custom_target/add_library by just writing add_library(Backend Backend.cpp ${PublishedHeaders}) (Untested. May only reliably work if you use configure_file. ymmv). Eike -- 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