Hello all, in the PLplot project I have run into the following problem: to test the build against one set of examples we need to copy them at CMake configuration time into the build directory. All seems to go well, but when the actual makefiles are generated I get error messages about CMake not being able to create the files.
I have isolated the problem by creating two separate directories: - src: with the CMakeLists.txt file and a single example (x02.tcl) - build: to build the example (effectively to copy x02.tcl into that directory). Here is the CMakeListst.txt file (stripped down): set(DATA_DIR data) set(BUILD_TEST ON) set(tcl_STRING_INDICES "02" ) set(tcl_SCRIPTS) foreach(STRING_INDEX ${tcl_STRING_INDICES}) set(tcl_FILES ${tcl_FILES} x${STRING_INDEX}.tcl) set(tcl_SCRIPTS ${tcl_SCRIPTS} x${STRING_INDEX}) endforeach(STRING_INDEX ${tcl_STRING_INDICES}) set(tclIndex_DEPENDS ${tcl_FILES} ${tcl_SCRIPTS}) set(tclIndex_WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) if(BUILD_TEST AND NOT CMAKE_CURRENT_BINARY_DIR STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}" ) # equivalent to install commands but at "make" time rather than # "make install" time, to the build tree if different than the source # tree. foreach(file ${tcl_SCRIPTS} ${tcl_FILES}) add_custom_target(${CMAKE_CURRENT_BINARY_DIR}/${file} ALL COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${file} ${CMAKE_CURRENT_BINARY_DIR} ) message(STATUS ${CMAKE_CURRENT_BINARY_DIR}/${file}) endforeach(file ${tcl_SCRIPTS} ${tcl_FILES}) endif(BUILD_TEST AND NOT CMAKE_CURRENT_BINARY_DIR STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}" ) When I run this in ..\build, using cmake -G "NMake makefiles" ..\src I get the following output: C:\arjen\plplot-5.6.1-cmake\testcbs\build>c:\arjen\cmake\install\bin\debug\cmake-G "NMake Makefiles" ..\src -- Check for CL compiler version -- Check for CL compiler version - 1200 -- Check if this is a free VC compiler -- Check if this is a free VC compiler - no -- Check CL platform -- Check CL platform - 32 bit -- Check for working C compiler: cl -- Check for working C compiler: cl -- works -- Check size of void* -- Check size of void* - done -- Check for working CXX compiler: cl -- Check for working CXX compiler: cl -- works -- C:/arjen/plplot-5.6.1-cmake/testcbs/build/x02 -- C:/arjen/plplot-5.6.1-cmake/testcbs/build/x02.tcl -- Configuring done CMake Error: Cannot open file for write: C:/arjen/plplot-5.6.1-cmake/testcbs/build/CMakeFiles/C:/arjen/plplot-5.6.1-cmake/testcbs/build/x02.dir/build.make.tmpCMake Error: : System Error: Invalid argument CMake Error: Cannot open file for write: C:/arjen/plplot-5.6.1-cmake/testcbs/build/CMakeFiles/C:/arjen/plplot-5.6.1-cmake/testcbs/build/x02.tcl.dir/build.make.tmpCMake Error: : System Error: Invalid argument -- Generating done CMake Error: Cannot open file for write: C:/arjen/plplot-5.6.1-cmake/testcbs/build/CMakeFiles/C:/arjen/plplot-5.6.1-cmake/testcbs/build/x02.dir/progress.make.tmpCMake Error: : System Error: Invalid argument CMake Error: Cannot open file for write: C:/arjen/plplot-5.6.1-cmake/testcbs/build/CMakeFiles/C:/arjen/plplot-5.6.1-cmake/testcbs/build/x02.tcl.dir/progress.make.tmpCMake Error: : System Error: Invalid argument -- Build files have been written to: C:/arjen/plplot-5.6.1-cmake/testcbs/build Clearly the path is all wrong (note the C:/arjen/... appearing twice) - but I can not see how this is generated from the CMakeLists.txt file. Can anyone solve this riddle? Regards, Arjen _______________________________________________ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake