new test
This commit is contained in:
parent
ba68f771b3
commit
7b3f2d4420
|
@ -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)
|
|
@ -0,0 +1 @@
|
||||||
|
int doc() { return 7;}
|
|
@ -0,0 +1,15 @@
|
||||||
|
#include "doc1.h"
|
||||||
|
|
||||||
|
int generated();
|
||||||
|
int wrapped();
|
||||||
|
|
||||||
|
int main ()
|
||||||
|
{
|
||||||
|
if (generated()*wrapped()*doc() == 3*5*7)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
FILE *fp = fopen(argv[1],"w");
|
||||||
|
|
||||||
|
fprintf(fp,"int generated() { return 3; }\n");
|
||||||
|
fclose(fp);
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
/* empty file */
|
|
@ -0,0 +1,9 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
FILE *fp = fopen(argv[1],"w");
|
||||||
|
|
||||||
|
fprintf(fp,"int wrapped() { return 5; }\n");
|
||||||
|
fclose(fp);
|
||||||
|
}
|
Loading…
Reference in New Issue