diff options
Diffstat (limited to 'Tests/CustomCommand/CMakeLists.txt')
-rw-r--r-- | Tests/CustomCommand/CMakeLists.txt | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/Tests/CustomCommand/CMakeLists.txt b/Tests/CustomCommand/CMakeLists.txt new file mode 100644 index 0000000..19a8399 --- /dev/null +++ b/Tests/CustomCommand/CMakeLists.txt @@ -0,0 +1,105 @@ +# +# Wrapping +# +PROJECT (CustomCommand) + +# +# Lib and exe path +# +SET (LIBRARY_OUTPUT_PATH + ${PROJECT_BINARY_DIR}/bin/ CACHE PATH + "Single output directory for building all libraries.") + +SET (EXECUTABLE_OUTPUT_PATH + ${PROJECT_BINARY_DIR}/bin/ CACHE PATH + "Single output directory for building all executables.") + +################################################################ +# +# First test using a compiled generator to create a .c file +# +################################################################ +# add the executable that will generate the file +ADD_EXECUTABLE(generator generator.c) + +# the folowing assumes that a cmSourceFile +# is instantiated for the output, with GENERATED 1 +# at the end of the day this becomes a what in VS ? +ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/generated.c + DEPENDS generator + COMMAND ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/generator + ARGS ${PROJECT_BINARY_DIR}/generated.c + ) + +################################################################ +# +# Test using a wrapper to wrap a header file +# +################################################################ +# add the executable that will generate the file +ADD_EXECUTABLE(wrapper wrapper.c) + +# the following assumes that a cmSourceFile +# is instantiated for the output, with GENERATED 1 +# at the end of the day this becomes a what in VS ? +ADD_CUSTOM_COMMAND( + OUTPUT ${PROJECT_BINARY_DIR}/wrapped.c + DEPENDS wrapper + MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/wrapped.h + COMMAND ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/wrapper + ARGS ${PROJECT_BINARY_DIR}/wrapped.c ${PROJECT_SOURCE_DIR}/wrapped.h + ) + +################################################################ +# +# Test creating files from a custom target +# +################################################################ +ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/doc1.dvi + DEPENDS ${PROJECT_SOURCE_DIR}/doc1.tex + COMMAND ${CMAKE_COMMAND} + ARGS -E copy ${PROJECT_SOURCE_DIR}/doc1.tex + ${PROJECT_BINARY_DIR}/doc1.dvi + ) + +ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/doc1.h + DEPENDS ${PROJECT_BINARY_DIR}/doc1.dvi + COMMAND ${CMAKE_COMMAND} + ARGS -E copy ${PROJECT_BINARY_DIR}/doc1.dvi + ${PROJECT_BINARY_DIR}/doc1.h + ) + +ADD_CUSTOM_TARGET(TDocument ALL + ${CMAKE_COMMAND} -E echo "building doc1.h" + DEPENDS ${PROJECT_BINARY_DIR}/doc1.h + ) + +################################################################ +# +# Test using a multistep generated file +# +################################################################ +ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/foo.pre + DEPENDS ${PROJECT_SOURCE_DIR}/foo.in + COMMAND ${CMAKE_COMMAND} + ARGS -E copy ${PROJECT_SOURCE_DIR}/foo.in + ${PROJECT_BINARY_DIR}/foo.pre + ) + +ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/foo.c + DEPENDS TDocument ${PROJECT_BINARY_DIR}/foo.pre + COMMAND ${CMAKE_COMMAND} + ARGS -E copy ${PROJECT_BINARY_DIR}/foo.pre + ${PROJECT_BINARY_DIR}/foo.c + ) + +# add the library +ADD_EXECUTABLE(CustomCommand + ${PROJECT_BINARY_DIR}/foo.c + ${PROJECT_BINARY_DIR}/wrapped.c + ${PROJECT_BINARY_DIR}/generated.c + ) + +# must add a dependency on TDocument otherwise it might never build and +# the CustomCommand executable really needs doc1.h +ADD_DEPENDENCIES(CustomCommand TDocument)
\ No newline at end of file |