Как получить относительный каталог назначения времени выполнения цели?

Давайте предположим, что я создаю цель следующим образом:

add_executable(app main.c)
install(TARGETS app
    RUNTIME DESTINATION some/path}
)

Как мне получить some/path с выражением генератора?

  • $<TARGET_FILE:tgt> возвращает полный абсолютный путь с префиксом установки
  • $<TARGET_FILE_DIR:tgt> делает то же самое и включает в себя имя файла
  • $<TARGET_FILE_NAME:tgt> возвращает только имя файла, а не путь

Что мне не хватает? Есть ли свойство, которое содержит эту информацию?

1 ответ

Здесь нет ни выражений генератора, ни свойств, отражающих путь установки конкретной цели. Все выражения генератора, которые вы перечисляете, отражают информацию о месте сборки цели.

Есть $<INSTALL_PREFIX> выражение генератора, но оно доступно только при экспорте цели (install(EXPORT)) и только внутри этой команды.

Итак, если вам нужен каталог назначения какой-то цели, вы должны написать его вручную. Или сохраните это в собственности некоторой цели и используйте $<TARGET_PROPERTY:tgt,prop> генератор выражений. [Обратите внимание, что если ваше свойство отражает относительный путь, такое выражение генератора нельзя использовать с install команда, потому что эта команда принимает только выражения генератора, которые содержат абсолютный путь.]

Другие вопросы по тегам