2016-03-03 31 views
7

Chcę zmienić nazwy niektórych plików wykonywalnych w CMakeLists.txt, ale także chcę mieć dowiązania symboliczne od starszych nazw do nowych plików w celu zapewnienia kompatybilności wstecznej. Jak można to osiągnąć w systemach obsługujących dowiązania symboliczne?Dowiązania symboliczne CMake

Jakie są alternatywy dla systemu, który nie obsługuje dowiązań symbolicznych?

Dzięki

+1

'także jakie są alternatywy dla system, który nie obsługuje dowiązań symbolicznych? '- Skopiuj pliki zamiast zmienić nazwę. Lub stwórz skrypt/malutki program ze starą nazwą, która właśnie wykonuje program z nową nazwą. – Tsyvarev

Odpowiedz

9

Można utworzyć cel niestandardowy i używać CMake tworzyć dowiązania

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

ta będzie działać tylko w systemach, które obsługują dowiązania patrz guide.

Dostępne na UNIX tylko:

create_symlink stary nowy - tworzenie dowiązania symbolicznego nowy -> stary

+0

O problemie w systemie Windows https://gitlab.kitware.com/cmake/cmake/issues/17461 – Sergei

6

Innym sposobem, aby to zrobić:

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

ten sposób symlinking zostanie wykonane tylko podczas make install.

5

Inną metodą, która jest nieco bardziej rozwlekły i działa tylko na zainstalowanie:

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) 

Używaj go jak ten (podobnie jak w ln -s):

install_symlink(filepath sympath) 
+0

Dokładnie to, czego szukałem. Wielkie dzięki. – warchantua

Powiązane problemy