2016-03-03 216 views
7

我想重命名CMakeLists.txt中的某些可执行文件,但也需要从旧名称到新文件的符号链接以实现向后兼容。这怎么能在支持符号链接的系统上完成?符号链接CMake

还有什么是不支持符号链接的系统的替代品?

感谢

+1

'还有什么办法为系统不支持符号链接?' - 复制文件而不是重命名。或者用旧名称创建脚本/小程序,它只是用新名称执行程序。 – Tsyvarev

回答

9

您可以创建一个自定义的目标,并使用CMake的创建符号链接

ADD_CUSTOM_TARGET(link_target ALL 
        COMMAND ${CMAKE_COMMAND} -E create_symlink ${target} ${link}) 

这将只能在支持符号链接的系统工作,看guide

在UNIX上唯一可用:

create_symlink新老 - 创建符号链接新 - >旧

+0

关于Windows上的问题https://gitlab.kitware.com/cmake/cmake/issues/17461 – Sergei

6

另一种方式来做到这一点:

INSTALL(CODE "execute_process(\ 
    COMMAND ${CMAKE_COMMAND} -E create_symlink \ 
    ${target} \ 
    ${link} \ 
    )" 
) 

这样的符号链接将仅在make install期间完成。

5

这是一个比较冗长,只是另一种方法上运行安装:

macro(install_symlink filepath sympath) 
    install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${filepath} ${sympath})") 
    install(CODE "message(\"-- Created symlink: ${sympath} -> ${filepath}\")") 
endmacro(install_symlink) 

使用方法如下(类似于LN-S):

install_symlink(filepath sympath) 
+0

正是我所期待的。十分感谢。 – warchantua