[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