mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-08 14:50:10 -06:00
install(FILES): Allow installation of symlinks to directory
Allow symbolic links to a directory to be installed via install(FILES ...). Fixes: #22159
This commit is contained in:
@@ -1482,7 +1482,8 @@ bool Helper::MakeFilesFullPath(const char* modeName,
|
||||
}
|
||||
|
||||
// Make sure the file is not a directory.
|
||||
if (gpos == std::string::npos && cmSystemTools::FileIsDirectory(file)) {
|
||||
if (gpos == std::string::npos && !cmSystemTools::FileIsSymlink(file) &&
|
||||
cmSystemTools::FileIsDirectory(file)) {
|
||||
this->SetError(
|
||||
cmStrCat(modeName, " given directory \"", relFile, "\" to install."));
|
||||
return false;
|
||||
|
||||
1
Tests/RunCMake/install/FILES-directory-result.txt
Normal file
1
Tests/RunCMake/install/FILES-directory-result.txt
Normal file
@@ -0,0 +1 @@
|
||||
1
|
||||
1
Tests/RunCMake/install/FILES-directory-stderr.txt
Normal file
1
Tests/RunCMake/install/FILES-directory-stderr.txt
Normal file
@@ -0,0 +1 @@
|
||||
install FILES given directory
|
||||
7
Tests/RunCMake/install/FILES-directory.cmake
Normal file
7
Tests/RunCMake/install/FILES-directory.cmake
Normal file
@@ -0,0 +1,7 @@
|
||||
set(dst "${CMAKE_CURRENT_BINARY_DIR}/dst")
|
||||
set(src "${CMAKE_CURRENT_BINARY_DIR}/src")
|
||||
|
||||
file(MAKE_DIRECTORY "${dst}")
|
||||
file(MAKE_DIRECTORY "${src}")
|
||||
|
||||
install(FILES "${src}" DESTINATION "${dst}")
|
||||
9
Tests/RunCMake/install/FILES-symlink-to-directory.cmake
Normal file
9
Tests/RunCMake/install/FILES-symlink-to-directory.cmake
Normal file
@@ -0,0 +1,9 @@
|
||||
set(dst "${CMAKE_CURRENT_BINARY_DIR}/dst")
|
||||
set(src "${CMAKE_CURRENT_BINARY_DIR}/src")
|
||||
set(lnk "${CMAKE_CURRENT_BINARY_DIR}/lnk")
|
||||
|
||||
file(MAKE_DIRECTORY "${dst}")
|
||||
file(MAKE_DIRECTORY "${src}")
|
||||
file(CREATE_LINK "${src}" "${lnk}" SYMBOLIC)
|
||||
|
||||
install(FILES "${lnk}" DESTINATION "${dst}")
|
||||
@@ -93,6 +93,10 @@ run_cmake(TARGETS-NAMELINK_COMPONENT-bad-all)
|
||||
run_cmake(TARGETS-NAMELINK_COMPONENT-bad-exc)
|
||||
run_cmake(FILES-DESTINATION-TYPE)
|
||||
run_cmake(DIRECTORY-DESTINATION-TYPE)
|
||||
run_cmake(FILES-directory)
|
||||
if(NOT WIN32)
|
||||
run_cmake(FILES-symlink-to-directory)
|
||||
endif()
|
||||
|
||||
set(RunCMake_TEST_OPTIONS "-DCMAKE_BUILD_TYPE:STRING=Debug")
|
||||
run_install_test(FILES-RENAME)
|
||||
|
||||
Reference in New Issue
Block a user