Commit 8e8f1118 authored by Domen Vrankar's avatar Domen Vrankar

handle non-existing symlink creation locations

parent cc4fbda1
......@@ -315,6 +315,9 @@ The following ``cmake -E`` commands are available only on UNIX:
``create_symlink <old> <new>``
Create a symbolic link ``<new>`` naming ``<old>``.
.. note::
Path to where ``<new>`` symbolic link will be created has to exist beforehand.
Windows-specific Command-Line Tools
-----------------------------------
......
......@@ -1486,6 +1486,9 @@ bool cmFileCopier::InstallSymlink(const char* fromFile, const char* toFile)
// Remove the destination file so we can always create the symlink.
cmSystemTools::RemoveFile(toFile);
// Create destination directory if it doesn't exist
cmSystemTools::MakeDirectory(cmSystemTools::GetFilenamePath(toFile));
// Create the symlink.
if (!cmSystemTools::CreateSymlink(symlinkTarget, toFile)) {
std::ostringstream e;
......
-- Before Installing
-- Installing: .*/Tests/RunCMake/file/INSTALL-SYMLINK-build/dst/current_dir_symlink
-- After Installing
set(src "${CMAKE_CURRENT_BINARY_DIR}/src")
set(dst "${CMAKE_CURRENT_BINARY_DIR}/dst")
file(REMOVE RECURSE "${src}")
file(REMOVE RECURSE "${dst}")
file(MAKE_DIRECTORY "${src}")
execute_process(COMMAND
${CMAKE_COMMAND} -E create_symlink source "${src}/current_dir_symlink")
message(STATUS "Before Installing")
file(INSTALL FILES "${src}/current_dir_symlink"
DESTINATION ${dst} TYPE DIRECTORY)
message(STATUS "After Installing")
......@@ -36,4 +36,5 @@ run_cmake(GLOB-noexp-LIST_DIRECTORIES)
if(NOT WIN32 OR CYGWIN)
run_cmake(GLOB_RECURSE-cyclic-recursion)
run_cmake(INSTALL-SYMLINK)
endif()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment