2016-03-03 280 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