[CMake] Re: Custom build step
pepone.onrez
pepone.onrez at gmail.com
Sat Jan 19 11:50:32 EST 2008
I know is not a good practice but this library only has generated code, and
the generated headers are need for build other applications made by third
parties. This is why i prefer to put in sources.
I atach here the relevant code for both cases and generated rules.
Case 1 - works as expected
Case 2 - i don`t see that Cmake generated any rule for the second commands.
Case 1)
ADD_CUSTOM_COMMAND(
OUTPUT ${PROJECT_SOURCE_DIR}/src/${SOURCE_OUTPUT_BASENAME}
${PROJECT_SOURCE_DIR}/include/${PROJECT_NAMESPACE}/${HEADER_OUTPUT_BASENAME}
COMMAND ${SLICE2CPP_COMMAND} ${SLICE_ARGS} ${SLICE_SOURCE}
COMMAND ${MOVE_FILE_COMMAND}
${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_OUTPUT_BASENAME}
${PROJECT_SOURCE_DIR}/src/${SOURCE_OUTPUT_BASENAME}
COMMAND ${MOVE_FILE_COMMAND}
${CMAKE_CURRENT_BINARY_DIR}/${HEADER_OUTPUT_BASENAME}
${PROJECT_SOURCE_DIR}/include/${PROJECT_NAMESPACE}/${HEADER_OUTPUT_BASENAME}
DEPENDS ${DEPENDS}
COMMENT "-- Generating ${SOURCE_OUTPUT_BASENAME}
${HEADER_OUTPUT_BASENAME} file from ${SLICE_SOURCE_BASENAME}")
#### Rules in Makefile For Case1 #####
../src/IPluginService.cpp: ../slice/Oz/IPluginService.ice
$(CMAKE_COMMAND) -E cmake_progress_report
/home/pepone/proyects/ydra-ipluginservice/build/CMakeFiles
$(CMAKE_PROGRESS_2)
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold
"-- Generating IPluginService.cpp IPluginService.h file from
IPluginService.ice"
/usr/bin/slice2cpp --include-dir Oz
-I/home/pepone/proyects/ydra-ipluginservice/slice -I/usr/share/slice
/home/pepone/proyects/ydra-ipluginservice/slice/Oz/IPluginService.ice
mv /home/pepone/proyects/ydra-ipluginservice/build/IPluginService.cpp
/home/pepone/proyects/ydra-ipluginservice/src/IPluginService.cpp
mv /home/pepone/proyects/ydra-ipluginservice/build/IPluginService.h
/home/pepone/proyects/ydra-ipluginservice/include/Oz/IPluginService.h
../include/Oz/IPluginService.h: ../src/IPluginService.cpp
CMakeFiles/IPluginService.dir/depend:
CMakeFiles/IPluginService.dir/depend.make.mark
############# END ##########################3
Case 2)
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_OUTPUT_BASENAME}
${CMAKE_CURRENT_BINARY_DIR}/${HEADER_OUTPUT_BASENAME}
COMMAND ${SLICE2CPP_COMMAND} ${SLICE_ARGS} ${SLICE_SOURCE}
DEPENDS ${DEPENDS}
COMMENT "-- Generating ${SOURCE_OUTPUT_BASENAME}
${HEADER_OUTPUT_BASENAME} file from ${SLICE_SOURCE_BASENAME}")
ADD_CUSTOM_COMMAND(
OUTPUT ${PROJECT_SOURCE_DIR}/src/${SOURCE_OUTPUT_BASENAME}
${PROJECT_SOURCE_DIR}/include/${PROJECT_NAMESPACE}/${HEADER_OUTPUT_BASENAME}
COMMAND ${MOVE_FILE_COMMAND}
${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_OUTPUT_BASENAME}
${PROJECT_SOURCE_DIR}/src/${SOURCE_OUTPUT_BASENAME}
COMMAND ${MOVE_FILE_COMMAND}
${CMAKE_CURRENT_BINARY_DIR}/${HEADER_OUTPUT_BASENAME}
${PROJECT_SOURCE_DIR}/include/${PROJECT_NAMESPACE}/${HEADER_OUTPUT_BASENAME}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_OUTPUT_BASENAME}
${CMAKE_CURRENT_BINARY_DIR}/${HEADER_OUTPUT_BASENAME}
COMMENT "-- Moving generated file ${SOURCE_OUTPUT_BASENAME} to
${PROJECT_SOURCE_DIR}/src")
##################### Rules in Makefile for Case 2)
######################################
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 2.4
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canoncical targets will work.
.SUFFIXES:
.SUFFIXES: .hpux_make_needs_suffix_list
# Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E remove -f
# The program to use to edit the cache.
CMAKE_EDIT_COMMAND = /usr/bin/ccmake
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/pepone/proyects/ydra-ipluginservice
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/pepone/proyects/ydra-ipluginservice/build
# Include any dependencies generated for this target.
include CMakeFiles/IPluginService.dir/depend.make
# Include the progress variables for this target.
include CMakeFiles/IPluginService.dir/progress.make
# Include the compile flags for this target's objects.
include CMakeFiles/IPluginService.dir/flags.make
CMakeFiles/IPluginService.dir/depend.make.mark:
CMakeFiles/IPluginService.dir/flags.make
CMakeFiles/IPluginService.dir/depend.make.mark: ../src/IPluginService.cpp
CMakeFiles/IPluginService.dir/src/IPluginService.o:
CMakeFiles/IPluginService.dir/flags.make
CMakeFiles/IPluginService.dir/src/IPluginService.o:
../src/IPluginService.cpp
$(CMAKE_COMMAND) -E cmake_progress_report
/home/pepone/proyects/ydra-ipluginservice/build/CMakeFiles
$(CMAKE_PROGRESS_1)
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green
"Building CXX object CMakeFiles/IPluginService.dir/src/IPluginService.o"
/usr/bin/c++ $(CXX_FLAGS) -o
CMakeFiles/IPluginService.dir/src/IPluginService.o -c
/home/pepone/proyects/ydra-ipluginservice/src/IPluginService.cpp
CMakeFiles/IPluginService.dir/src/IPluginService.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green
"Preprocessing CXX source to
CMakeFiles/IPluginService.dir/src/IPluginService.i"
/usr/bin/c++ $(CXX_FLAGS) -E
/home/pepone/proyects/ydra-ipluginservice/src/IPluginService.cpp >
CMakeFiles/IPluginService.dir/src/IPluginService.i
CMakeFiles/IPluginService.dir/src/IPluginService.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green
"Compiling CXX source to assembly
CMakeFiles/IPluginService.dir/src/IPluginService.s"
/usr/bin/c++ $(CXX_FLAGS) -S
/home/pepone/proyects/ydra-ipluginservice/src/IPluginService.cpp -o
CMakeFiles/IPluginService.dir/src/IPluginService.s
CMakeFiles/IPluginService.dir/src/IPluginService.o.requires:
CMakeFiles/IPluginService.dir/src/IPluginService.o.provides:
CMakeFiles/IPluginService.dir/src/IPluginService.o.requires
$(MAKE) -f CMakeFiles/IPluginService.dir/build.make
CMakeFiles/IPluginService.dir/src/IPluginService.o.provides.build
CMakeFiles/IPluginService.dir/src/IPluginService.o.provides.build:
CMakeFiles/IPluginService.dir/src/IPluginService.o
IPluginService.cpp: ../slice/Oz/IPluginService.ice
$(CMAKE_COMMAND) -E cmake_progress_report
/home/pepone/proyects/ydra-ipluginservice/build/CMakeFiles
$(CMAKE_PROGRESS_2)
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold
"-- Generating IPluginService.cpp IPluginService.h file from
IPluginService.ice"
/usr/bin/slice2cpp --include-dir Oz
-I/home/pepone/proyects/ydra-ipluginservice/slice -I/usr/share/slice
/home/pepone/proyects/ydra-ipluginservice/slice/Oz/IPluginService.ice
IPluginService.h: IPluginService.cpp
CMakeFiles/IPluginService.dir/depend:
CMakeFiles/IPluginService.dir/depend.make.mark
CMakeFiles/IPluginService.dir/depend.make.mark: IPluginService.cpp
CMakeFiles/IPluginService.dir/depend.make.mark: IPluginService.h
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --magenta --bold
"Scanning dependencies of target IPluginService"
cd /home/pepone/proyects/ydra-ipluginservice/build && $(CMAKE_COMMAND)
-E cmake_depends "Unix Makefiles" /home/pepone/proyects/ydra-ipluginservice
/home/pepone/proyects/ydra-ipluginservice
/home/pepone/proyects/ydra-ipluginservice/build
/home/pepone/proyects/ydra-ipluginservice/build
/home/pepone/proyects/ydra-ipluginservice/build/CMakeFiles/IPluginService.dir/DependInfo.cmake
# Object files for target IPluginService
IPluginService_OBJECTS = \
"CMakeFiles/IPluginService.dir/src/IPluginService.o"
# External object files for target IPluginService
IPluginService_EXTERNAL_OBJECTS =
libIPluginService.so: CMakeFiles/IPluginService.dir/src/IPluginService.o
libIPluginService.so: CMakeFiles/IPluginService.dir/build.make
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold
"Linking CXX shared library libIPluginService.so"
$(CMAKE_COMMAND) -P
CMakeFiles/IPluginService.dir/cmake_clean_target.cmake
$(CMAKE_COMMAND) -E cmake_link_script
CMakeFiles/IPluginService.dir/link.txt --verbose=$(VERBOSE)
# Rule to build all files generated by this target.
CMakeFiles/IPluginService.dir/build: libIPluginService.so
CMakeFiles/IPluginService.dir/requires:
CMakeFiles/IPluginService.dir/src/IPluginService.o.requires
CMakeFiles/IPluginService.dir/clean:
$(CMAKE_COMMAND) -P CMakeFiles/IPluginService.dir/cmake_clean.cmake
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/cmake/attachments/20080119/0922f7a1/attachment-0001.html
More information about the CMake
mailing list