On Thu, May 15, 2014 at 13:23:10 -0700, Alan W. Irwin wrote: > I have recently been reminded that the "cmake -E remove" command has a > limitation due to the length of command line that is acceptable to > whatever shell is being used. Is there any willingness to remove that > limitation (in which case it would be worthwhile for me to make a > formal bug report) or is this limitation something that should just be > accepted indefinitely?
This isn't limited to "cmake -E remove". The problem is that the line is too long to even call "cmake -E remove", so no amount of code on CMake's side will help here. Well, /technically/ it could, but then you need some way of doing: add_custom_command( TARGET clean-testfiles BASE_COMMAND cmake -E remove ARGUMENTS ${test_output_files_LIST}) and then have CMake implement something like xargs to chunk the available arguments out. I don't think the extra complexity is worth it, IMO. Possible solutions I can think of follow. > The reason I ask is the PLplot test suite has a combinatorial issue > with the number of different tests that are possible. As currently > implemented we are careful not to explore all combinations of the > possibilities in our testing. Nevertheless, the typical result of > ctest is ~5000 files which consume ~3GB of disk space. Therefore, I > have implemented a convenience custom target to remove all those files > as follows: Would it make more sense to have tests delete their outputs unless they fail or KEEP_TEST_FILES environment variable is set (which would then be run on a subset of tests ideally)? This is what VTK does. > add_custom_target(clean_ctest_plot_files > COMMAND ${CMAKE_COMMAND} -E remove ${test_output_files_LIST} > WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} > ) Alternatively (with caveats in Ninja; see below): add_custom_target(clean_ctest_plot_files) foreach (test_file IN LISTS test_output_files_LIST) add_custom_command( TARGET clean_ctest_plot_files COMMAND cmake -E remove "${test_file}") endforeach () This is probably fine in makefiles (which I believe is one line per command on a target), but will fail with ninja though (since it joins all commands with " && " and runs in one shell). I don't know about the IDE generators. Ninja would be fine with your add_custom_target if you set CMAKE_NINJA_FORCE_RESPONSE_FILE to TRUE though. --Ben -- 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/cgi-bin/mailman/listinfo/cmake-developers