mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 21:31:08 -06:00
Merge topic 'cmake-e-rm'
2d0100fac7replace remove and remove_directory with rm in tests5239fc5c75cmake -E: Add rm with improved semantics over remove and remove_directory Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3949
This commit is contained in:
@@ -554,22 +554,38 @@ Available commands are:
|
||||
7a0b54896fe5e70cca6dd643ad6f672614b189bf26f8153061c4d219474b05dad08c4e729af9f4b009f1a1a280cb625454bf587c690f4617c27e3aebdf3b7a2d file2.txt
|
||||
|
||||
``remove [-f] <file>...``
|
||||
Remove the file(s). If any of the listed files already do not
|
||||
exist, the command returns a non-zero exit code, but no message
|
||||
is logged. The ``-f`` option changes the behavior to return a
|
||||
.. deprecated:: 3.17
|
||||
|
||||
Remove the file(s). The planned behaviour was that if any of the
|
||||
listed files already do not exist, the command returns a non-zero exit code,
|
||||
but no message is logged. The ``-f`` option changes the behavior to return a
|
||||
zero exit code (i.e. success) in such situations instead.
|
||||
``remove`` does not follow symlinks. That means it remove only symlinks
|
||||
and not files it point to.
|
||||
|
||||
The implementation was buggy and always returned 0. It cannot be fixed without
|
||||
breaking backwards compatibility. Use ``rm`` instead.
|
||||
|
||||
``remove_directory <dir>...``
|
||||
Remove ``<dir>`` directories and their contents. If a directory does
|
||||
.. deprecated:: 3.17
|
||||
|
||||
Remove ``<dir>`` directories and their contents. If a directory does
|
||||
not exist it will be silently ignored. If ``<dir>`` is a symlink to
|
||||
a directory, just the symlink will be removed.
|
||||
Use ``rm`` instead.
|
||||
|
||||
``rename <oldname> <newname>``
|
||||
Rename a file or directory (on one volume). If file with the ``<newname>`` name
|
||||
already exists, then it will be silently replaced.
|
||||
|
||||
``rm [-rRf] <file> <dir>...``
|
||||
Remove the files ``<file>`` or directories ``dir``.
|
||||
Use ``-r`` or ``-R`` to remove directories and their contents recursively.
|
||||
If any of the listed files/directories do not exist, the command returns a
|
||||
non-zero exit code, but no message is logged. The ``-f`` option changes
|
||||
the behavior to return a zero exit code (i.e. success) in such
|
||||
situations instead.
|
||||
|
||||
``server``
|
||||
Launch :manual:`cmake-server(7)` mode.
|
||||
|
||||
|
||||
12
Help/release/dev/command_rm.rst
Normal file
12
Help/release/dev/command_rm.rst
Normal file
@@ -0,0 +1,12 @@
|
||||
Command-Line
|
||||
--------------------
|
||||
|
||||
* :manual:`cmake(1)` gained a ``rm`` command line
|
||||
option that can be used to remove directories (with ``-r`` or ``-R`` flag)
|
||||
and files.
|
||||
If the ``-f`` flag is not specified, attempting to remove a file that
|
||||
doesn't exist returns an non-zero error code.
|
||||
This command deprecates ``remove`` and ``remove_directory``.
|
||||
The ``remove`` implementation was buggy and always returned 0 when ``force``
|
||||
flag was not present and a file didn't exist. It cannot be fixed without
|
||||
breaking backwards compatibility so we introduced ``rm``.
|
||||
@@ -155,7 +155,7 @@ function(cmake_add_fortran_subdirectory subdir)
|
||||
# make the external project always run make with each build
|
||||
externalproject_add_step(${project_name}_build forcebuild
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-E remove
|
||||
-E rm -f
|
||||
${CMAKE_CURRENT_BUILD_DIR}/${project_name}-prefix/src/${project_name}-stamp/${project_name}-build
|
||||
DEPENDEES configure
|
||||
DEPENDERS build
|
||||
|
||||
@@ -1120,7 +1120,7 @@ if(NOT \"${gitclone_infofile}\" IS_NEWER_THAN \"${gitclone_stampfile}\")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND \${CMAKE_COMMAND} -E remove_directory \"${source_dir}\"
|
||||
COMMAND \${CMAKE_COMMAND} -E rm -rf \"${source_dir}\"
|
||||
RESULT_VARIABLE error_code
|
||||
)
|
||||
if(error_code)
|
||||
@@ -1196,7 +1196,7 @@ if(NOT \"${hgclone_infofile}\" IS_NEWER_THAN \"${hgclone_stampfile}\")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND \${CMAKE_COMMAND} -E remove_directory \"${source_dir}\"
|
||||
COMMAND \${CMAKE_COMMAND} -E rm -rf \"${source_dir}\"
|
||||
RESULT_VARIABLE error_code
|
||||
)
|
||||
if(error_code)
|
||||
@@ -2580,7 +2580,7 @@ function(_ep_add_download_command name)
|
||||
if(IS_DIRECTORY "${url}")
|
||||
get_filename_component(abs_dir "${url}" ABSOLUTE)
|
||||
set(comment "Performing download step (DIR copy) for '${name}'")
|
||||
set(cmd ${CMAKE_COMMAND} -E remove_directory ${source_dir}
|
||||
set(cmd ${CMAKE_COMMAND} -E rm -rf ${source_dir}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${abs_dir} ${source_dir})
|
||||
else()
|
||||
get_property(no_extract TARGET "${name}" PROPERTY _EP_DOWNLOAD_NO_EXTRACT SET)
|
||||
|
||||
@@ -2006,7 +2006,7 @@ macro(CUDA_BUILD_CLEAN_TARGET)
|
||||
string(TOUPPER ${cuda_clean_target_name} cuda_clean_target_name)
|
||||
endif()
|
||||
add_custom_target(${cuda_clean_target_name}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${CUDA_ADDITIONAL_CLEAN_FILES})
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f ${CUDA_ADDITIONAL_CLEAN_FILES})
|
||||
|
||||
# Clear out the variable, so the next time we configure it will be empty.
|
||||
# This is useful so that the files won't persist in the list after targets
|
||||
|
||||
@@ -174,7 +174,7 @@ endmacro()
|
||||
# Delete the target file
|
||||
cuda_execute_process(
|
||||
"Removing ${generated_file}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E remove "${generated_file}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E rm -f "${generated_file}"
|
||||
)
|
||||
|
||||
# For CUDA 2.3 and below, -G -M doesn't work, so remove the -G flag
|
||||
@@ -241,7 +241,7 @@ endif()
|
||||
# Delete the temporary file
|
||||
cuda_execute_process(
|
||||
"Removing ${cmake_dependency_file}.tmp and ${NVCC_generated_dependency_file}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E remove "${cmake_dependency_file}.tmp" "${NVCC_generated_dependency_file}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E rm -f "${cmake_dependency_file}.tmp" "${NVCC_generated_dependency_file}"
|
||||
)
|
||||
|
||||
if(CUDA_result)
|
||||
@@ -267,7 +267,7 @@ if(CUDA_result)
|
||||
# Since nvcc can sometimes leave half done files make sure that we delete the output file.
|
||||
cuda_execute_process(
|
||||
"Removing ${generated_file}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E remove "${generated_file}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E rm -f "${generated_file}"
|
||||
)
|
||||
message(FATAL_ERROR "Error generating file ${generated_file}")
|
||||
else()
|
||||
|
||||
@@ -47,7 +47,7 @@ set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_C_COMPILER> <FLAGS> <OBJECTS> -o <TARGET> <C
|
||||
|
||||
# needs sdcc 2.7.0 + sddclib from cvs
|
||||
set(CMAKE_C_CREATE_STATIC_LIBRARY
|
||||
"\"${CMAKE_COMMAND}\" -E remove <TARGET>"
|
||||
"\"${CMAKE_COMMAND}\" -E rm -f <TARGET>"
|
||||
"<CMAKE_AR> -a <TARGET> <LINK_FLAGS> <OBJECTS> ")
|
||||
|
||||
# not supported by sdcc
|
||||
|
||||
@@ -124,7 +124,7 @@ macro(__windows_compiler_gnu lang)
|
||||
string(REPLACE "<OBJECTS>" "-Wl,--whole-archive <OBJECT_DIR>/objects.a -Wl,--no-whole-archive"
|
||||
CMAKE_${lang}_${rule} "${CMAKE_${lang}_${rule}}")
|
||||
set(CMAKE_${lang}_${rule}
|
||||
"<CMAKE_COMMAND> -E remove -f <OBJECT_DIR>/objects.a"
|
||||
"<CMAKE_COMMAND> -E rm -f <OBJECT_DIR>/objects.a"
|
||||
"<CMAKE_AR> cr <OBJECT_DIR>/objects.a <OBJECTS>"
|
||||
"${CMAKE_${lang}_${rule}}"
|
||||
)
|
||||
|
||||
@@ -629,7 +629,7 @@ void cmLocalUnixMakefileGenerator3::WriteMakeVariables(
|
||||
<< "# The command to remove a file.\n"
|
||||
<< "RM = "
|
||||
<< cmakeShellCommand
|
||||
<< " -E remove -f\n"
|
||||
<< " -E rm -f\n"
|
||||
<< "\n";
|
||||
makefileStream
|
||||
<< "# Escaping for special characters.\n"
|
||||
|
||||
@@ -486,7 +486,7 @@ std::vector<std::string> cmNinjaNormalTargetGenerator::ComputeLinkCmd()
|
||||
std::string cmakeCommand =
|
||||
this->GetLocalGenerator()->ConvertToOutputFormat(
|
||||
cmSystemTools::GetCMakeCommand(), cmOutputConverter::SHELL);
|
||||
linkCmds.push_back(cmakeCommand + " -E remove $TARGET_FILE");
|
||||
linkCmds.push_back(cmakeCommand + " -E rm -f $TARGET_FILE");
|
||||
}
|
||||
// TODO: Use ARCHIVE_APPEND for archives over a certain size.
|
||||
{
|
||||
|
||||
@@ -107,10 +107,12 @@ void CMakeCommandUsage(const char* program)
|
||||
<< " sha384sum <file>... - create SHA384 checksum of files\n"
|
||||
<< " sha512sum <file>... - create SHA512 checksum of files\n"
|
||||
<< " remove [-f] <file>... - remove the file(s), use -f to force "
|
||||
"it\n"
|
||||
<< " remove_directory <dir>... - remove directories and their contents\n"
|
||||
"it (deprecated: use rm instead)\n"
|
||||
<< " remove_directory <dir>... - remove directories and their contents (deprecated: use rm instead)\n"
|
||||
<< " rename oldname newname - rename a file or directory "
|
||||
"(on one volume)\n"
|
||||
<< " rm [-rRf] <file/dir>... - remove files or directories, use -f to "
|
||||
"force it, r or R to remove directories and their contents recursively\n"
|
||||
<< " server - start cmake in server mode\n"
|
||||
<< " sleep <number>... - sleep for given number of seconds\n"
|
||||
<< " tar [cxt][vf][zjJ] file.tar [file/dir1 file/dir2 ...]\n"
|
||||
@@ -172,6 +174,24 @@ static bool cmTarFilesFrom(std::string const& file,
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool cmRemoveDirectory(const std::string& dir, bool recursive = true)
|
||||
{
|
||||
if (cmSystemTools::FileIsSymlink(dir)) {
|
||||
if (!cmSystemTools::RemoveFile(dir)) {
|
||||
std::cerr << "Error removing directory symlink \"" << dir << "\".\n";
|
||||
return false;
|
||||
}
|
||||
} else if (!recursive) {
|
||||
std::cerr << "Error removing directory \"" << dir
|
||||
<< "\" without recursive option.\n";
|
||||
return false;
|
||||
} else if (!cmSystemTools::RemoveADirectory(dir)) {
|
||||
std::cerr << "Error removing directory \"" << dir << "\".\n";
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static int HandleIWYU(const std::string& runCmd,
|
||||
const std::string& /* sourceFile */,
|
||||
const std::vector<std::string>& orig_cmd)
|
||||
@@ -706,14 +726,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args)
|
||||
bool return_value = false;
|
||||
for (auto const& arg : cmMakeRange(args).advance(2)) {
|
||||
if (cmSystemTools::FileIsDirectory(arg)) {
|
||||
if (cmSystemTools::FileIsSymlink(arg)) {
|
||||
if (!cmSystemTools::RemoveFile(arg)) {
|
||||
std::cerr << "Error removing directory symlink \"" << arg
|
||||
<< "\".\n";
|
||||
return_value = true;
|
||||
}
|
||||
} else if (!cmSystemTools::RemoveADirectory(arg)) {
|
||||
std::cerr << "Error removing directory \"" << arg << "\".\n";
|
||||
if (!cmRemoveDirectory(arg)) {
|
||||
return_value = true;
|
||||
}
|
||||
}
|
||||
@@ -739,6 +752,65 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Remove directories or files with rm
|
||||
if (args[1] == "rm" && args.size() > 2) {
|
||||
// If an error occurs, we want to continue removing the remaining
|
||||
// files/directories.
|
||||
int return_value = 0;
|
||||
bool force = false;
|
||||
bool recursive = false;
|
||||
bool doing_options = true;
|
||||
bool at_least_one_file = false;
|
||||
for (auto const& arg : cmMakeRange(args).advance(2)) {
|
||||
if (doing_options && cmHasLiteralPrefix(arg, "-")) {
|
||||
if (arg == "--") {
|
||||
doing_options = false;
|
||||
}
|
||||
if (arg.find('f') != std::string::npos) {
|
||||
force = true;
|
||||
}
|
||||
if (arg.find_first_of("rR") != std::string::npos) {
|
||||
recursive = true;
|
||||
}
|
||||
if (arg.find_first_not_of("-frR") != std::string::npos) {
|
||||
cmSystemTools::Error("Unknown -E rm argument: " + arg);
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
if (arg.empty()) {
|
||||
continue;
|
||||
}
|
||||
at_least_one_file = true;
|
||||
// Complain if the -f option was not given and
|
||||
// either file does not exist or
|
||||
// file could not be removed and still exists
|
||||
bool file_exists_or_forced_remove = cmSystemTools::FileExists(arg) ||
|
||||
cmSystemTools::FileIsSymlink(arg) || force;
|
||||
if (cmSystemTools::FileIsDirectory(arg)) {
|
||||
if (!cmRemoveDirectory(arg, recursive)) {
|
||||
return_value = 1;
|
||||
}
|
||||
} else if ((!file_exists_or_forced_remove) ||
|
||||
(!cmSystemTools::RemoveFile(arg) &&
|
||||
cmSystemTools::FileExists(arg))) {
|
||||
if (!file_exists_or_forced_remove) {
|
||||
cmSystemTools::Error(
|
||||
"File to remove does not exist and force is not set: " + arg);
|
||||
} else {
|
||||
cmSystemTools::Error("File can't be removed and still exist: " +
|
||||
arg);
|
||||
}
|
||||
return_value = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!at_least_one_file) {
|
||||
cmSystemTools::Error("Missing file/directory to remove");
|
||||
return 1;
|
||||
}
|
||||
return return_value;
|
||||
}
|
||||
|
||||
// Touch file
|
||||
if (args[1] == "touch" && args.size() > 2) {
|
||||
for (auto const& arg : cmMakeRange(args).advance(2)) {
|
||||
|
||||
@@ -21,11 +21,11 @@ set(N 7)
|
||||
|
||||
# First setup source and binary trees:
|
||||
#
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E rm -rf
|
||||
${dir}/Source
|
||||
)
|
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E rm -rf
|
||||
${dir}/Build
|
||||
)
|
||||
|
||||
@@ -69,7 +69,7 @@ foreach(i RANGE 1 ${N})
|
||||
|
||||
# Save this iteration of the Build directory:
|
||||
#
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E rm -rf
|
||||
${dir}/b${i}
|
||||
)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
|
||||
@@ -104,7 +104,7 @@ install(FILES ${CPackComponentsDEB_BINARY_DIR}/symtest
|
||||
COMPONENT applications)
|
||||
|
||||
if(EXISTS "./dirtest")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory ./dirtest)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E rm -rf ./dirtest)
|
||||
endif()
|
||||
# NOTE: directory left empty on purpose
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ./dirtest)
|
||||
|
||||
@@ -324,7 +324,7 @@ if (WIN32)
|
||||
${file}
|
||||
"[${hkey}]" DOC "Registry_Test_Path")
|
||||
exec_program(${CMAKE_COMMAND} ARGS "-E delete_regv \"${hkey}\"")
|
||||
exec_program(${CMAKE_COMMAND} ARGS "-E remove \"${dir}/${file}\"")
|
||||
exec_program(${CMAKE_COMMAND} ARGS "-E rm -f \"${dir}/${file}\"")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ if("${CMAKE_GENERATOR}" MATCHES "Makefile" AND CMAKE_MAKE_PROGRAM)
|
||||
|
||||
# Custom target to try preprocessing invocation.
|
||||
add_custom_target(test_preprocess ${MAYBE_ALL}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove CMakeFiles/create_file.dir/create_file.i
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f CMakeFiles/create_file.dir/create_file.i
|
||||
COMMAND ${CMAKE_MAKE_PROGRAM} create_file.i
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/test_preprocess.cmake
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
|
||||
@@ -281,7 +281,7 @@ if (WIN32)
|
||||
${file}
|
||||
"[${hkey}]" DOC "Registry_Test_Path")
|
||||
exec_program(${CMAKE_COMMAND} ARGS "-E delete_regv \"${hkey}\"")
|
||||
exec_program(${CMAKE_COMMAND} ARGS "-E remove \"${dir}/${file}\"")
|
||||
exec_program(${CMAKE_COMMAND} ARGS "-E rm -f \"${dir}/${file}\"")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ if("${CMAKE_GENERATOR}" MATCHES "Makefile" AND CMAKE_MAKE_PROGRAM)
|
||||
|
||||
# Custom target to try preprocessing invocation.
|
||||
add_custom_target(test_preprocess ${MAYBE_ALL}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove CMakeFiles/create_file.dir/create_file.i
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f CMakeFiles/create_file.dir/create_file.i
|
||||
COMMAND ${CMAKE_MAKE_PROGRAM} create_file.i
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/test_preprocess.cmake
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
|
||||
@@ -70,7 +70,7 @@ add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/doc1.h APPEND
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/doc1temp.h
|
||||
${PROJECT_BINARY_DIR}/doc1.h
|
||||
COMMAND ${CMAKE_COMMAND} -E echo " Removing doc1temp.h."
|
||||
COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_BINARY_DIR}/doc1temp.h
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f ${PROJECT_BINARY_DIR}/doc1temp.h
|
||||
)
|
||||
|
||||
# Add custom command to generate foo.h.
|
||||
@@ -412,7 +412,7 @@ add_custom_target(do_check_command_line ALL
|
||||
add_dependencies(do_check_command_line check_command_line)
|
||||
|
||||
add_custom_target(pre_check_command_line
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/check_mark.txt
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_BINARY_DIR}/check_mark.txt
|
||||
)
|
||||
add_dependencies(do_check_command_line pre_check_command_line)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ endif()
|
||||
# Wipe out the install tree to make sure the exporter works.
|
||||
add_custom_command(
|
||||
OUTPUT ${ExportImport_BINARY_DIR}/CleanupProject
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory ${ExportImport_BINARY_DIR}/Root
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -rf ${ExportImport_BINARY_DIR}/Root
|
||||
)
|
||||
add_custom_target(CleanupTarget ALL DEPENDS ${ExportImport_BINARY_DIR}/CleanupProject)
|
||||
set_property(
|
||||
|
||||
@@ -103,11 +103,11 @@ if("${CMAKE_GENERATOR}" MATCHES "Makefile" AND CMAKE_MAKE_PROGRAM)
|
||||
|
||||
# Custom target to try preprocessing invocation.
|
||||
add_custom_target(test_preprocess ${MAYBE_ALL}
|
||||
COMMAND ${CMAKE_COMMAND} -E remove CMakeFiles/preprocess.dir/preprocess.F.i
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f CMakeFiles/preprocess.dir/preprocess.F.i
|
||||
COMMAND ${CMAKE_MAKE_PROGRAM} preprocess.i
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/test_preprocess.cmake
|
||||
# Remove bogus file some compilers leave behind.
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_SOURCE_DIR}/preprocess.s
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_SOURCE_DIR}/preprocess.s
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -9,7 +9,7 @@ find_package(Java COMPONENTS Development)
|
||||
# Wipe out the install tree to make sure the exporter works.
|
||||
add_custom_command(
|
||||
OUTPUT ${JavaExportImport_BINARY_DIR}/CleanupProject
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory ${JavaExportImport_BINARY_DIR}/Root
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -rf ${JavaExportImport_BINARY_DIR}/Root
|
||||
)
|
||||
add_custom_target(CleanupTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/CleanupProject)
|
||||
set_property(
|
||||
|
||||
@@ -33,7 +33,7 @@ ExternalProject_Add(ExternalTarget
|
||||
# directly because it does not know the full paths to the libraries.
|
||||
# (The purpose of this test is to check that link_directories works.)
|
||||
ExternalProject_Add_Step(ExternalTarget cleanup
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory ${LinkDirectory_BINARY_DIR}/bin
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -rf ${LinkDirectory_BINARY_DIR}/bin
|
||||
DEPENDEES download
|
||||
DEPENDERS configure
|
||||
DEPENDS mylibA mylibB
|
||||
|
||||
@@ -7,7 +7,7 @@ endif()
|
||||
# Wipe out the install tree to make sure the exporter works.
|
||||
add_custom_command(
|
||||
OUTPUT ${MacRuntimePath_BINARY_DIR}/CleanupProject
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory ${MacRuntimePath_BINARY_DIR}/Root
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -rf ${MacRuntimePath_BINARY_DIR}/Root
|
||||
)
|
||||
add_custom_target(CleanupTarget ALL DEPENDS ${MacRuntimePath_BINARY_DIR}/CleanupProject)
|
||||
set_property(
|
||||
|
||||
@@ -445,7 +445,7 @@ add_RunCMake_test(target_include_directories)
|
||||
add_RunCMake_test(target_sources)
|
||||
add_RunCMake_test(CheckModules)
|
||||
add_RunCMake_test(CheckIPOSupported)
|
||||
add_RunCMake_test(CommandLine -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME})
|
||||
add_RunCMake_test(CommandLine -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DCYGWIN=${CYGWIN})
|
||||
add_RunCMake_test(CommandLineTar)
|
||||
|
||||
if(CMAKE_PLATFORM_NO_VERSIONED_SONAME OR (NOT CMAKE_SHARED_LIBRARY_SONAME_FLAG AND NOT CMAKE_SHARED_LIBRARY_SONAME_C_FLAG))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
function(setup_resource_tests)
|
||||
if(CTEST_RESOURCE_ALLOC_ENABLED)
|
||||
add_test(NAME ResourceSetup COMMAND "${CMAKE_COMMAND}" -E remove -f "${CMAKE_BINARY_DIR}/ctresalloc.log")
|
||||
add_test(NAME ResourceSetup COMMAND "${CMAKE_COMMAND}" -E rm -f "${CMAKE_BINARY_DIR}/ctresalloc.log")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
|
||||
1
Tests/RunCMake/CommandLine/E_rm_bad_argument-result.txt
Normal file
1
Tests/RunCMake/CommandLine/E_rm_bad_argument-result.txt
Normal file
@@ -0,0 +1 @@
|
||||
1
|
||||
1
Tests/RunCMake/CommandLine/E_rm_bad_argument-stderr.txt
Normal file
1
Tests/RunCMake/CommandLine/E_rm_bad_argument-stderr.txt
Normal file
@@ -0,0 +1 @@
|
||||
^CMake Error: Unknown -E rm argument: -rd$
|
||||
@@ -0,0 +1,3 @@
|
||||
if(NOT EXISTS ${out}/dir/existing.txt)
|
||||
set(RunCMake_TEST_FAILED "${out}/dir/existing.txt should exist (we only removed the link to dir folder)")
|
||||
endif()
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
^CMake Error: Missing file/directory to remove$
|
||||
@@ -0,0 +1,8 @@
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E rm ""
|
||||
RESULT_VARIABLE actual_result
|
||||
)
|
||||
|
||||
if(NOT "${actual_result}" EQUAL "1")
|
||||
message(SEND_ERROR "cmake -E rm \"\" should have returned 1, got ${actual_result}")
|
||||
endif()
|
||||
@@ -0,0 +1,3 @@
|
||||
if(EXISTS ${out}/existing.txt)
|
||||
set(RunCMake_TEST_FAILED "${out}/existing.txt not removed")
|
||||
endif()
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1,3 @@
|
||||
if(NOT EXISTS ${out}/existing.txt)
|
||||
set(RunCMake_TEST_FAILED "${out}/existing.txt should exist (we only removed the link)")
|
||||
endif()
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1,3 @@
|
||||
if(EXISTS ${out}/existing.txt)
|
||||
set(RunCMake_TEST_FAILED "${out}/existing.txt not removed")
|
||||
endif()
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
1
|
||||
@@ -0,0 +1 @@
|
||||
^CMake Error: File to remove does not exist and force is not set: .*/rm_tests/not_existing.txt
|
||||
@@ -0,0 +1,3 @@
|
||||
if(EXISTS ${out}/existing.txt)
|
||||
set(RunCMake_TEST_FAILED "${out}/existing.txt not removed")
|
||||
endif()
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
1
|
||||
@@ -0,0 +1 @@
|
||||
^CMake Error: File to remove does not exist and force is not set: .*/rm_tests/not_existing.txt
|
||||
@@ -0,0 +1,3 @@
|
||||
if(EXISTS ${out})
|
||||
set(RunCMake_TEST_FAILED "${out} not removed")
|
||||
endif()
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
1
|
||||
@@ -0,0 +1 @@
|
||||
^CMake Error: Missing file/directory to remove$
|
||||
@@ -0,0 +1,3 @@
|
||||
if(NOT EXISTS ${out}/d1 OR NOT EXISTS ${out}/d2)
|
||||
set(RunCMake_TEST_FAILED "${out}/d1 or ${out}/d2 is removed but should not")
|
||||
endif()
|
||||
@@ -0,0 +1 @@
|
||||
1
|
||||
@@ -0,0 +1,2 @@
|
||||
^Error removing directory ".*/rm_tests/d1" without recursive option\.
|
||||
Error removing directory ".*/rm_tests/d2" without recursive option\.$
|
||||
@@ -0,0 +1,3 @@
|
||||
if(EXISTS ${out}/d1 OR EXISTS ${out}/d2)
|
||||
set(RunCMake_TEST_FAILED "${out}/d1 or ${out}/d2 should be removed")
|
||||
endif()
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1,3 @@
|
||||
if(NOT EXISTS ${out}/dir/existing.txt)
|
||||
set(RunCMake_TEST_FAILED "${out}/dir/existing.txt should exist (we only removed the link to dir folder)")
|
||||
endif()
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1,3 @@
|
||||
if(NOT EXISTS ${out}/existing.txt)
|
||||
set(RunCMake_TEST_FAILED "${out}/existing.txt should exist (we only removed the link)")
|
||||
endif()
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -388,6 +388,76 @@ endif()
|
||||
unset(out)
|
||||
unset(outfile)
|
||||
|
||||
set(out ${RunCMake_BINARY_DIR}/rm_tests)
|
||||
file(REMOVE_RECURSE "${out}")
|
||||
file(MAKE_DIRECTORY ${out})
|
||||
file(TOUCH ${out}/existing.txt)
|
||||
run_cmake_command(E_rm_file_force_existing
|
||||
${CMAKE_COMMAND} -E rm -f ${out}/existing.txt)
|
||||
file(TOUCH ${out}/existing.txt)
|
||||
run_cmake_command(E_rm_file_non_force_existing
|
||||
${CMAKE_COMMAND} -E rm ${out}/existing.txt)
|
||||
run_cmake_command(E_rm_file_force_non_existing
|
||||
${CMAKE_COMMAND} -E rm -f ${out}/not_existing.txt)
|
||||
run_cmake_command(E_rm_file_non_force_non_existing
|
||||
${CMAKE_COMMAND} -E rm ${out}/not_existing.txt)
|
||||
|
||||
file(TOUCH ${out}/existing.txt)
|
||||
run_cmake_command(E_rm_file_recursive_existing
|
||||
${CMAKE_COMMAND} -E rm -r ${out}/existing.txt)
|
||||
run_cmake_command(E_rm_file_recursive_non_existing
|
||||
${CMAKE_COMMAND} -E rm -r ${out}/not_existing.txt)
|
||||
|
||||
file(MAKE_DIRECTORY ${out}/d1 ${out}/d2)
|
||||
run_cmake_command(E_rm_non_recursive_directory-two-directories
|
||||
${CMAKE_COMMAND} -E rm ${out}/d1 ${out}/d2)
|
||||
|
||||
run_cmake_command(E_rm_recursive_directory-two-directories
|
||||
${CMAKE_COMMAND} -E rm -R ${out}/d1 ${out}/d2)
|
||||
|
||||
run_cmake_command(E_rm_no_file_specified
|
||||
${CMAKE_COMMAND} -E rm -rf)
|
||||
|
||||
run_cmake_command(E_rm_empty_file_specified
|
||||
${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR}/E_rm_empty_file_specified.cmake)
|
||||
|
||||
run_cmake_command(E_rm_bad_argument
|
||||
${CMAKE_COMMAND} -E rm -rd ${out}/d1 ${out}/d2)
|
||||
|
||||
file(MAKE_DIRECTORY ${out}/d1 ${out}/d2)
|
||||
file(WRITE ${out}/test.txt "")
|
||||
run_cmake_command(E_rm_force_recursive_directory_with_files
|
||||
${CMAKE_COMMAND} -E rm -rf ${out}/)
|
||||
|
||||
run_cmake_command(E_rm_force_recursive_non_existing_file
|
||||
${CMAKE_COMMAND} -E rm -Rf ${out}/test.txt)
|
||||
|
||||
if(NOT WIN32 AND NOT CYGWIN)
|
||||
file(MAKE_DIRECTORY ${out})
|
||||
file(TOUCH ${out}/existing.txt)
|
||||
file(MAKE_DIRECTORY ${out}/dir)
|
||||
file(TOUCH ${out}/dir/existing.txt) # add a file in the folder
|
||||
file(CREATE_LINK ${out}/dir ${out}/link_dir SYMBOLIC)
|
||||
file(CREATE_LINK ${out}/existing.txt ${out}/existing_file_link.txt SYMBOLIC)
|
||||
file(CREATE_LINK ${out}/non_existing.txt ${out}/non_existing_file_link.txt SYMBOLIC)
|
||||
run_cmake_command(E_rm_file_link_existing
|
||||
${CMAKE_COMMAND} -E rm ${out}/existing_file_link.txt)
|
||||
run_cmake_command(E_rm_directory_link_existing
|
||||
${CMAKE_COMMAND} -E rm ${out}/link_dir)
|
||||
run_cmake_command(E_rm_file_link_non_existing
|
||||
${CMAKE_COMMAND} -E rm ${out}/non_existing_file_link.txt)
|
||||
|
||||
file(CREATE_LINK ${out}/dir ${out}/link_dir SYMBOLIC)
|
||||
file(CREATE_LINK ${out}/existing.txt ${out}/existing_file_link.txt SYMBOLIC)
|
||||
file(CREATE_LINK ${out}/non_existing.txt ${out}/non_existing_file_link.txt SYMBOLIC)
|
||||
run_cmake_command(E_rm_recursive_file_link_existing
|
||||
${CMAKE_COMMAND} -E rm -R ${out}/existing_file_link.txt)
|
||||
run_cmake_command(E_rm_recursive_directory_link_existing
|
||||
${CMAKE_COMMAND} -E rm -r ${out}/link_dir)
|
||||
run_cmake_command(E_rm_recursive_file_link_non_existing
|
||||
${CMAKE_COMMAND} -E rm -r ${out}/non_existing_file_link.txt)
|
||||
endif()
|
||||
unset(out)
|
||||
|
||||
run_cmake_command(E_env-no-command0 ${CMAKE_COMMAND} -E env)
|
||||
run_cmake_command(E_env-no-command1 ${CMAKE_COMMAND} -E env TEST_ENV=1)
|
||||
|
||||
@@ -53,7 +53,7 @@ LIBRARY_PATH=c:/DoesNotExist/mingw/bin/../lib/gcc/mingw32/4.9.3/;c:/DoesNotExist
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles\cmTC_ab097.dir\CMakeCCompilerABI.c.obj' '-c' '-mtune=generic' '-march=i586'
|
||||
Linking C executable cmTC_ab097.exe
|
||||
"C:\CMake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_ab097.dir\link.txt --verbose=1
|
||||
"C:\CMake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_ab097.dir/objects.a
|
||||
"C:\CMake\bin\cmake.exe" -E rm -f CMakeFiles\cmTC_ab097.dir/objects.a
|
||||
C:\DoesNotExist\MinGW\bin\ar.exe cr CMakeFiles\cmTC_ab097.dir/objects.a @CMakeFiles\cmTC_ab097.dir\objects1.rsp
|
||||
C:\DoesNotExist\MinGW\bin\gcc.exe -v -Wl,--whole-archive CMakeFiles\cmTC_ab097.dir/objects.a -Wl,--no-whole-archive -o cmTC_ab097.exe -Wl,--out-implib,libcmTC_ab097.dll.a -Wl,--major-image-version,0,--minor-image-version,0
|
||||
Using built-in specs.
|
||||
|
||||
@@ -59,7 +59,7 @@ LIBRARY_PATH=c:/DoesNotExist/mingw/bin/../lib/gcc/mingw32/4.9.3/;c:/DoesNotExist
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles\cmTC_2b790.dir\CMakeCXXCompilerABI.cpp.obj' '-c' '-shared-libgcc' '-mtune=generic' '-march=i586'
|
||||
Linking CXX executable cmTC_2b790.exe
|
||||
"C:\CMake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_2b790.dir\link.txt --verbose=1
|
||||
"C:\CMake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_2b790.dir/objects.a
|
||||
"C:\CMake\bin\cmake.exe" -E rm -f CMakeFiles\cmTC_2b790.dir/objects.a
|
||||
C:\DoesNotExist\MinGW\bin\ar.exe cr CMakeFiles\cmTC_2b790.dir/objects.a @CMakeFiles\cmTC_2b790.dir\objects1.rsp
|
||||
C:\DoesNotExist\MinGW\bin\g++.exe -v -Wl,--whole-archive CMakeFiles\cmTC_2b790.dir/objects.a -Wl,--no-whole-archive -o cmTC_2b790.exe -Wl,--out-implib,libcmTC_2b790.dll.a -Wl,--major-image-version,0,--minor-image-version,0
|
||||
Using built-in specs.
|
||||
|
||||
@@ -5,7 +5,7 @@ project(StagingPrefix)
|
||||
# Wipe out the install tree
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/CleanupProject
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -rf
|
||||
${CMAKE_BINARY_DIR}/ConsumerBuild
|
||||
${CMAKE_BINARY_DIR}/ProducerBuild
|
||||
${CMAKE_BINARY_DIR}/stage
|
||||
|
||||
@@ -3,5 +3,5 @@ project(example1)
|
||||
add_executable(example1 example1.cxx)
|
||||
|
||||
add_custom_command(TARGET example1 POST_BUILD
|
||||
COMMAND "${CMAKE_COMMAND}" ARGS -E remove ${SUBDIR_BINARY_DIR}/ShouldBeHere
|
||||
COMMAND "${CMAKE_COMMAND}" ARGS -E rm -f ${SUBDIR_BINARY_DIR}/ShouldBeHere
|
||||
COMMENT "Remove marker file that should exist because this should not be run")
|
||||
|
||||
@@ -3,5 +3,5 @@ project(example1)
|
||||
add_executable(example1 example1.cxx)
|
||||
|
||||
add_custom_command(TARGET example1 POST_BUILD
|
||||
COMMAND "${CMAKE_COMMAND}" ARGS -E remove ${SUBDIR_BINARY_DIR}/ShouldBeHere
|
||||
COMMAND "${CMAKE_COMMAND}" ARGS -E rm -f ${SUBDIR_BINARY_DIR}/ShouldBeHere
|
||||
COMMENT "Remove marker file that should exist because this should not be run")
|
||||
|
||||
@@ -56,8 +56,8 @@ set(source_dir "${base_dir}/src")
|
||||
#
|
||||
ExternalProject_Add(clean-${PROJECT_NAME}
|
||||
DOWNLOAD_COMMAND ""
|
||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${source_dir}"
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} -E remove_directory "${binary_dir}"
|
||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E rm -rf "${source_dir}"
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} -E rm -rf "${binary_dir}"
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ if(CMAKE_DOC_TARBALL)
|
||||
endif()
|
||||
add_custom_command(
|
||||
OUTPUT ${dir}.stamp
|
||||
COMMAND cmake -E remove_directory ${dir}
|
||||
COMMAND cmake -E rm -rf ${dir}
|
||||
COMMAND cmake -E tar xf ${CMAKE_DOC_TARBALL}
|
||||
COMMAND cmake -E touch ${dir}.stamp
|
||||
DEPENDS ${CMAKE_DOC_TARBALL}
|
||||
|
||||
@@ -13,7 +13,7 @@ foreach(file ${files})
|
||||
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
|
||||
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
exec_program(
|
||||
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
|
||||
"@CMAKE_COMMAND@" ARGS "-E rm -f \"$ENV{DESTDIR}${file}\""
|
||||
OUTPUT_VARIABLE rm_out
|
||||
RETURN_VALUE rm_retval
|
||||
)
|
||||
|
||||
@@ -8,7 +8,7 @@ foreach(file ${files})
|
||||
message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
|
||||
if(EXISTS "$ENV{DESTDIR}${file}")
|
||||
exec_program(
|
||||
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
|
||||
"@CMAKE_COMMAND@" ARGS "-E rm -f \"$ENV{DESTDIR}${file}\""
|
||||
OUTPUT_VARIABLE rm_out
|
||||
RETURN_VALUE rm_retval
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user