CMake переименовывает исполняемую цель на этапе установки или создает символическую ссылку - PullRequest
0 голосов
/ 03 мая 2020

Я пробовал несколько подходов:

  1. install(TARGETS tgt RUNTIME DESTINATION /usr/bin RENAME another_name) игнорирует RENAME без предупреждения. Документация не говорит о RENAME для TARGETS.
  2. add_executable(zbus-publish ALIAS zbus-example-publisher) выдает ошибку

    install TARGETS given target "zbus-publish" which is an alias.

  3. попытался установить символические ссылки на установленные цели

    install(CODE "execute_process(COMMAND ln -s zbus-example-publisher  ${DESTDIR}/${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/zbus-publish
                                  COMMAND ln -s zbus-example-subscriber ${DESTDIR}/${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/zbus-subscribe)
          message(==================================================)"
    

    Но это расширяет DESTDIR до нуля.

Мне нужен DESTDIR, потому что для проверки моей установки используйте make DESTDIR=xxxx. Это очень удобно. А также полезно при кросс-компиляции.

CMake версия 3.17.2

1 Ответ

0 голосов
/ 03 мая 2020

Я нашел ответ здесь

Вы можете изменить префикс, имя вывода и суффикс, используя функцию set_target_properties () и свойство PREFIX / OUTPUT_NAME / SUFFIX в следующем путь:

Префикс:

set_target_properties(new_thing PROPERTIES PREFIX "")

Имя выхода:

set_target_properties(new_thing PROPERTIES OUTPUT_NAME "better_name")

Суффикс:

set_target_properties(new_thing PROPERTIES SUFFIX ".so.1")

Это не совсем то, что Я искал. Но работает в особом случае.
Я бы хотел сохранить OUTPUT_NAME s как есть и создавать символические ссылки во время install.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...