Pregunta Enlaces simbólicos CMake


Quiero cambiar el nombre de ciertos ejecutables en CMakeLists.txt pero también quiere enlaces simbólicos desde los nombres más antiguos a los nuevos para compatibilidad con versiones anteriores. ¿Cómo se puede lograr esto en los sistemas que admiten enlaces simbólicos?

Además, ¿cuáles son las alternativas para el sistema que no admite enlaces simbólicos?

Gracias


10
2018-03-03 06:53


origen


Respuestas:


Puede crear un objetivo personalizado y usar CMake para crear enlaces simbólicos

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

Esto solo funcionará en los sistemas que admiten enlaces simbólicos, ver guía.

Disponible solo en UNIX:

create_symlink viejo nuevo - crear un enlace simbólico nuevo -> viejo


11
2018-03-03 07:05



Otra forma de hacerlo:

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

De esta manera, el enlace simbólico se realizará durante make install solamente.


11
2017-12-08 10:31



Otro método que es un poco más detallado y solo se ejecuta en la instalación:

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)

Úselo así (similar a ln -s):

install_symlink(filepath sympath)

9
2018-03-09 14:07