[CMake] Custom build step
pepone.onrez
pepone.onrez at gmail.com
Sat Jan 19 04:23:10 EST 2008
Hello i creating a CMake macro for compile same IDL files.
Here is steps i trying to do
1) find all files in ./slice directory that's end with .ice
for each .ice files
1.1) run slice2cpp compiler that's generate a .h and .cpp file white the
same name as the .ice
1.2) move the .h file to the include directory
1.3) move the .cpp file to the source directory
2) Compile the generated files in a shared library
Here is the macro i use for steps (1.1 1.2 1.3) - the problem is that the
second CUSTOM_COMMAND that's move generated files
to is final destination is not called. Any help is appreciated , thanks in
advance
SET ( SLICE2CPP_COMMAND ${ICE_HOME}/bin/slice2cpp${EXE_EXTENSION} )
SET ( SLICE_SOURCE_DIR ${PROJECT_SOURCE_DIR}/slice )
SET ( SLICE2CPP_GENERATED_SOURCES ${PROJECT_SOURCE_DIR}/src )
SET ( SLICE2CPP_GENERATED_HEADERS ${PROJECT_SOURCE_DIR}/include )
SET ( MOVE_FILE_COMMAND mv )
SET ( SLICE_ARGS -I${SLICE_SOURCE_DIR} -I${ICE_SLICE_HOME}/slice)
#
# Appends the new_bit to the original.
# If the original is not set, it will be set to the new_bit.
#
MACRO( APPEND ORIGINAL NEW_BIT )
IF ( NOT ${ORIGINAL} )
SET( ${ORIGINAL} ${NEW_BIT} )
ELSE ( NOT ${ORIGINAL} )
SET( ${ORIGINAL} ${${ORIGINAL}} ${NEW_BIT} )
ENDIF ( NOT ${ORIGINAL} )
ENDMACRO( APPEND ORIGINAL NEW_BIT )
#
# Generate rules for buil slice files.
#
MACRO ( GENERATE_SLICE2CPP_RULES GENERATED_CPP_LIST GENERATED_HEADER_LIST )
FOREACH( SLICE_SOURCE_BASENAME ${ARGN} )
APPEND( GEN_SLICE_RULES_SLICE_DEPENDS
"${SLICE_SOURCE_DIR}/${PROJECT_NAMESPACE}/${SLICE_SOURCE_BASENAME}" )
ENDFOREACH( SLICE_SOURCE_BASENAME ${ARGN} )
FOREACH( SLICE_SOURCE_BASENAME ${ARGN} )
SET( SLICE_SOURCE
"${SLICE_SOURCE_DIR}/${PROJECT_NAMESPACE}/${SLICE_SOURCE_BASENAME}" )
STRING( REGEX REPLACE "\\.ice" .cpp SOURCE_OUTPUT_BASENAME
"${SLICE_SOURCE_BASENAME}" )
STRING( REGEX REPLACE "\\.ice" .h HEADER_OUTPUT_BASENAME
"${SLICE_SOURCE_BASENAME}" )
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_OUTPUT_BASENAME}
${CMAKE_CURRENT_BINARY_DIR}/${HEADER_OUTPUT_BASENAME}
COMMAND ${SLICE2CPP_COMMAND}
ARGS ${SLICE_SOURCE} ${SLICE_ARGS}
COMMENT "-- Generating ${SOURCE_OUTPUT_BASENAME}
${HEADER_OUTPUT_BASENAME} file from ${SLICE_SOURCE}")
ADD_CUSTOM_COMMAND(
OUTPUT ${PROJECT_SOURCE_DIR}/src/${SOURCE_OUTPUT_BASENAME}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_OUTPUT_BASENAME}
COMMAND ${MOVE_FILE_COMMAND}
ARGS ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_OUTPUT_BASENAME}
${PROJECT_SOURCE_DIR}/src
COMMENT "-- Moving ${SOURCE_OUTPUT_BASENAME} to sources dir
${PROJECT_SOURCE_DIR}/src")
APPEND ( "${GENERATED_CPP_LIST}"
"${PROJECT_SOURCE_DIR}/src/${SOURCE_OUTPUT_BASENAME}" )
APPEND ( "${GENERATED_HEADER_LIST}" "include/${PROJECT_NAMESPACE}" )
ENDFOREACH( SLICE_SOURCE_BASENAME ${ARGN} )
ENDMACRO ( GENERATE_SLICE2CPP_RULES GENERATED_CPP_LIST GENERATED_HEADER_LIST
)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/cmake/attachments/20080119/a77ec089/attachment-0001.html
More information about the CMake
mailing list