[CMake] Re: ADD_CUSTOM_TARGET not behaving as advertized?
Chris Green
chissg at comcast.net
Wed Aug 3 09:54:38 EDT 2005
Hi,
I had a minor mistake in the last illustration of my problem because I was
extracting it from a larger base, so here's a minimal test case:
ls -lR cmake-test
cmake-test:
total 3
-rw-r--r-- 1 greenc e898 19 Aug 3 08:30 CMakeLists.txt
drwxr-xr-x 2 greenc e898 2048 Aug 3 08:42 subdir
cmake-test/subdir:
total 5
-rw-r--r-- 1 greenc e898 156 Aug 3 08:36 CMakeLists.txt
-rw-r--r-- 1 greenc e898 31 Aug 3 08:32 HookTarget.cmake
-rw-r--r-- 1 greenc e898 533 Aug 3 08:39 ScriptCopy.cmake
-rwxr-xr-x 1 greenc e898 20 Aug 3 08:37 script1
-rwxr-xr-x 1 greenc e898 20 Aug 3 08:37 script2
cmake-test/CMakeLists.txt
########################################################################
SUBDIRS ( subdir )
########################################################################
cmake-test/subdir/CMakeLists.txt
########################################################################
SET ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR} )
INCLUDE ( HookTarget )
INCLUDE ( ScriptCopy )
SCRIPT_COPY ( script1 script2 )
########################################################################
cmake-test/subdir/HookTarget.cmake
########################################################################
ADD_CUSTOM_TARGET ( hook ALL )
########################################################################
cmake-test/subdir/ScriptCopy.cmake
########################################################################
MACRO ( SCRIPT_COPY )
FOREACH ( script ${ARGV} )
GET_FILENAME_COMPONENT ( script_name
${script}
NAME
)
ADD_CUSTOM_COMMAND (
OUTPUT ${CMAKE_BINARY_DIR}/${script_name}
MAIN_DEPENDENCY ${script}
COMMAND ${CMAKE_COMMAND} -E copy
${script}
${CMAKE_BINARY_DIR}/${script_name}
COMMENT Installing ${script_name} in ${CMAKE_BINARY_DIR}
)
ADD_DEPENDENCIES ( hook
${CMAKE_BINARY_DIR}/${script_name}
)
ENDFOREACH ( script ${ARGV} )
ENDMACRO ( SCRIPT_COPY )
########################################################################
cmake-test/subdir/script1
########################################################################
#!/bin/bash
echo 1
########################################################################
cmake-test/subdir/script2
########################################################################
#!/bin/bash
echo 2
########################################################################
Now we try to make:
cmake ~/VLAND/cmake-test
-- Check for working C compiler: gcc
-- Check for working C compiler: gcc -- works
-- Check size of void *
-- Check size of void * - done
-- Check for working CXX compiler: c++
-- Check for working CXX compiler: c++ -- works
-- Configuring done
-- Generating done
-- Build files have been written to: /scratch1/greenc/cmake-test-build
/scratch1/greenc/cmake-test-build $ make
/scratch1/greenc/cmake-test-build $ make VERBOSE=1 clean
make -f Makefile2 clean
make[1]: Entering directory `/scratch1/greenc/cmake-test-build'
make -f subdir/hook.dir/build.make subdir/hook.dir/clean
make[2]: Entering directory `/scratch1/greenc/cmake-test-build'
/afs/fnal.gov/files/code/e898/code/6/CMake-CVS/bin/cmake -E remove -f script1 script2
make[2]: Leaving directory `/scratch1/greenc/cmake-test-build'
make[1]: Leaving directory `/scratch1/greenc/cmake-test-build'
Am I fundamentally misunderstanding how this is supposed to work, or is
something actually wrong? Advice appreciated.
Thanks,
Chris.
--
Chris Green, MiniBooNE / LANL. Email greenc at fnal.gov
Tel: (630) 840-2167. Fax: (630) 840-3867
More information about the CMake
mailing list