CMake/Tests/CustomCommand/CMakeLists.txt

115 lines
3.7 KiB
CMake
Raw Normal View History

2003-06-03 18:34:15 +04:00
#
# Wrapping
#
PROJECT (CustomCommand)
#
# Lib and exe path
#
SET (LIBRARY_OUTPUT_PATH
2003-06-30 18:12:24 +04:00
${PROJECT_BINARY_DIR}/bin/ CACHE PATH
"Single output directory for building all libraries.")
2003-06-03 18:34:15 +04:00
SET (EXECUTABLE_OUTPUT_PATH
2003-06-30 18:12:24 +04:00
${PROJECT_BINARY_DIR}/bin/ CACHE PATH
"Single output directory for building all executables.")
2003-06-03 18:34:15 +04:00
################################################################
#
# First test using a compiled generator to create a .c file
#
################################################################
# add the executable that will generate the file
2003-06-04 17:02:50 +04:00
ADD_EXECUTABLE(generator generator.cxx)
2003-06-03 18:34:15 +04:00
GET_TARGET_PROPERTY(generator_PATH generator LOCATION)
MESSAGE("Location ${generator_PATH}")
2003-06-03 18:34:15 +04:00
# 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
2003-06-30 18:12:24 +04:00
DEPENDS generator
COMMAND ${generator_PATH}
2003-06-30 18:12:24 +04:00
ARGS ${PROJECT_BINARY_DIR}/generated.c
)
2003-06-03 18:34:15 +04:00
################################################################
#
# Test using a wrapper to wrap a header file
#
################################################################
# add the executable that will generate the file
2003-06-04 17:02:50 +04:00
ADD_EXECUTABLE(wrapper wrapper.cxx)
2003-06-03 18:34:15 +04:00
# 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(
2003-06-30 18:12:24 +04:00
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
)
2003-06-03 18:34:15 +04:00
################################################################
#
# Test creating files from a custom target
#
################################################################
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/doc1.dvi
2003-06-30 18:12:24 +04:00
DEPENDS ${PROJECT_SOURCE_DIR}/doc1.tex
COMMAND ${CMAKE_COMMAND}
ARGS -E copy ${PROJECT_SOURCE_DIR}/doc1.tex
${PROJECT_BINARY_DIR}/doc1.dvi
)
2003-06-03 18:34:15 +04:00
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/doc1.h
DEPENDS ${PROJECT_BINARY_DIR}/doc1.dvi
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/doc1.dvi
${PROJECT_BINARY_DIR}/doc1temp.h
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/doc1temp.h
${PROJECT_BINARY_DIR}/doc1.h
2003-06-30 18:12:24 +04:00
)
2003-06-03 18:34:15 +04:00
ADD_CUSTOM_TARGET(TDocument ALL
COMMAND ${CMAKE_COMMAND} -E echo "Copying doc1.h to doc2.h."
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/doc1.h
${PROJECT_BINARY_DIR}/doc2.h
2003-06-30 18:12:24 +04:00
DEPENDS ${PROJECT_BINARY_DIR}/doc1.h
)
2003-06-03 18:34:15 +04:00
################################################################
#
# Test using a multistep generated file
#
################################################################
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/foo.pre
2003-06-30 18:12:24 +04:00
DEPENDS ${PROJECT_SOURCE_DIR}/foo.in
COMMAND ${CMAKE_COMMAND}
ARGS -E copy ${PROJECT_SOURCE_DIR}/foo.in
${PROJECT_BINARY_DIR}/foo.pre
)
2003-06-03 18:34:15 +04:00
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/foo.c
DEPENDS ${PROJECT_BINARY_DIR}/foo.pre
2003-06-30 18:12:24 +04:00
COMMAND ${CMAKE_COMMAND}
ARGS -E copy ${PROJECT_BINARY_DIR}/foo.pre
${PROJECT_BINARY_DIR}/foo.c
)
2003-06-03 18:34:15 +04:00
SET_SOURCE_FILES_PROPERTIES(${PROJECT_BINARY_DIR}/foo.c PROPERTIES
OBJECT_DEPENDS ${PROJECT_BINARY_DIR}/doc1.h)
2003-06-03 18:34:15 +04:00
# 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
2003-06-30 18:12:24 +04:00
ADD_DEPENDENCIES(CustomCommand TDocument)