The following issue has been SUBMITTED. ====================================================================== http://public.kitware.com/Bug/view.php?id=11973 ====================================================================== Reported By: Aaron Simmons Assigned To: ====================================================================== Project: CMake Issue ID: 11973 Category: (No Category) Reproducibility: always Severity: major Priority: normal Status: new ====================================================================== Date Submitted: 2011-03-15 15:32 EDT Last Modified: 2011-03-15 15:32 EDT ====================================================================== Summary: double-slashes in paths breaks dependency resolution Description: Concatenating paths often leads to double-slashes. Most software seems to be able to deal with this, including CMake (2.8.3 and previous). However, CMake 2.8.4 can't handle it.
Steps to Reproduce: 1) Here is an example CMakeLists.txt: cmake_minimum_required(VERSION 2.8.4) project(test) set(dir_to ${CMAKE_BINARY_DIR}/files/) # note the trailing sash set(myfile_from ${CMAKE_CURRENT_SOURCE_DIR}/myfile.txt) set(myfile_to ${dir_to}/myfile.txt) get_filename_component( parent_to ${myfile_to} PATH ) message("${myfile_from} => ${myfile_to}") ADD_CUSTOM_COMMAND( OUTPUT ${myfile_to} COMMAND ${CMAKE_COMMAND} -E make_directory ${dir_to} COMMAND ${CMAKE_COMMAND} -E copy ${myfile_from} ${myfile_to} DEPENDS ${myfile_from} ) add_custom_target(copyit DEPENDS ${myfile_to}) 2) Run it: asimmons-mac:.build asimmons$ rm -rf *; cmake ..; make copyit -- The C compiler identification is GNU -- The CXX compiler identification is GNU -- Checking whether C compiler has -isysroot -- Checking whether C compiler has -isysroot - yes -- Checking whether C compiler supports OSX deployment target flag -- Checking whether C compiler supports OSX deployment target flag - yes -- Check for working C compiler: /usr/bin/gcc -- Check for working C compiler: /usr/bin/gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Checking whether CXX compiler has -isysroot -- Checking whether CXX compiler has -isysroot - yes -- Checking whether CXX compiler supports OSX deployment target flag -- Checking whether CXX compiler supports OSX deployment target flag - yes -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done /Users/asimmons/Development/test/cmake/myfile.txt => /Users/asimmons/Development/test/cmake/.build/files//myfile.txt -- Configuring done -- Generating done -- Build files have been written to: /Users/asimmons/Development/test/cmake/.build Scanning dependencies of target copyit make[3]: *** No rule to make target `files/myfile.txt', needed by `CMakeFiles/copyit'. Stop. make[2]: *** [CMakeFiles/copyit.dir/all] Error 2 make[1]: *** [CMakeFiles/copyit.dir/rule] Error 2 make: *** [copyit] Error 2 3) Removing the trailing slash from line 4 will workaround the problem. Additional Information: Notice that the error output (*** No rule to make target `files/myfile.txt') has removed the double-slash. It seems like part of CMake can deal with the double-slash, but others can't. Since previous CMake verions (2.8.3-) could deal with double-slashes, I assume that this is a bug. If its deliberate, I urge you to consider the pain involved in constantly checking path concatenations for double slashes. At least provide some kind of "path concat" function. ====================================================================== Issue History Date Modified Username Field Change ====================================================================== 2011-03-15 15:32 Aaron Simmons New Issue ====================================================================== _______________________________________________ cmake-developers mailing list cmake-developers@cmake.org http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers