The following issue has been SUBMITTED. ====================================================================== http://www.cmake.org/Bug/view.php?id=15116 ====================================================================== Reported By: Vijay Pradeep Assigned To: ====================================================================== Project: CMake Issue ID: 15116 Category: CMake Reproducibility: always Severity: minor Priority: normal Status: new ====================================================================== Date Submitted: 2014-08-29 13:11 EDT Last Modified: 2014-08-29 13:11 EDT ====================================================================== Summary: cmake add_custom_command issue with multiple output files Description: I'm noticing some potential incorrect behavior in cmake when working with add_custom_command and multiple output files. I've been able to isolate the problem to a minimal example (see below). It seems that when I have two output files specified in my add_custom_command, the second output file's upstream dependencies are not being tracked correctly in some cases. The cmake documentation clearly mentions that multiple output files are allowed. What's interesting here is that swapping the order of the output files causes different behavior, suggesting that the first OUTPUT file is being treated differently.
(Crossposted here: http://stackoverflow.com/questions/24416133/cmake-add-custom-command-issue-with-multiple-output-files) Steps to Reproduce: Example CMakeLists.txt: cmake_minimum_required(VERSION 2.8) add_library(mybaz baz.cpp) add_custom_command( OUTPUT baz2.cpp COMMAND cp baz.cpp baz2.cpp DEPENDS baz.cpp COMMENT "Copying baz.cpp to baz2.cpp") add_custom_target(mytarget DEPENDS baz2.cpp COMMENT "Running mytarget") add_dependencies(mybaz mytarget) add_custom_command( OUTPUT bar.cpp baz.cpp COMMAND cat a.txt > bar.cpp COMMAND cat a.txt > baz.cpp DEPENDS a.txt COMMENT "Generating bar.cpp and baz.cpp") ====================================================== Below are the commands that I run: > touch a.txt > cmake . ...snip... (configuration runs fine) > make Scanning dependencies of target mytarget [ 20%] Generating bar.cpp and baz.cpp [ 40%] Copying baz.cpp to baz2.cpp [ 60%] Running mytarget [ 60%] Built target mytarget Scanning dependencies of target mybaz [ 80%] Building CXX object CMakeFiles/mybaz.dir/baz.cpp.o Linking CXX static library libmybaz.a [100%] Built target mybaz (everything looks good) > touch a.txt > make [ 20%] Generating bar.cpp and baz.cpp [ 40%] Running mytarget [ 60%] Built target mytarget Scanning dependencies of target mybaz [ 80%] Building CXX object CMakeFiles/mybaz.dir/baz.cpp.o Linking CXX static library libmybaz.a [100%] Built target mybaz (I seem to be missing the 'Copying baz.cpp to baz2.cpp' line) > make [ 20%] Copying baz.cpp to baz2.cpp [ 40%] Running mytarget [ 60%] Built target mytarget [100%] Built target mybaz ( The 'Copying baz.cpp to baz2.cpp' executes this time ) ====================================================================== Issue History Date Modified Username Field Change ====================================================================== 2014-08-29 13:11 Vijay Pradeep New Issue ====================================================================== -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake-developers
