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