CMake:符号链接文件,而不是在安装期间复制它们

时间:2017-09-12 14:15:43

标签: cmake symlink

make install期间制作CMake副本文件很简单:

install(TARGETS foo DESTINATION lib)
install(DIRECTORY Include/ DESTINATION include)

但是有可能编写make symlink来制作符号链接而不是复制文件吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:0)

编写创建所需符号链接的CMake脚本:

<强> symlink_include_dir.cmake.in

execute_process(COMMAND cmake -E create_symlink
    "@CMAKE_SOURCE_DIR@/include" # Old name
    "@CMAKE_INSTALL_PREFIX@/include" # New name
)

CMakeLists.txt中配置此脚本以针对实际源和安装路径进行调整,并从install(SCRIPT)调用它:

<强>的CMakeLists.txt

# This will copy original script with @variable@ replaced with variable's value.
configure_file("symlink_include_dir.cmake.in" "symlink_include_dir.cmake"
   @ONLY)

# Tell CMake to use the script at install stage
install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/symlink_include_dir.cmake")

答案 1 :(得分:0)

好的,在阅读了建议的答案并做了几次尝试之后,我设法写了代码:

add_custom_target(symlink
    ${CMAKE_COMMAND} -E create_symlink ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/libfoo.a ${CMAKE_INSTALL_PREFIX}/lib/libfoo.a
    COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/Include ${CMAKE_INSTALL_PREFIX}/include)