Как получить относительный каталог назначения времени выполнения цели?
Давайте предположим, что я создаю цель следующим образом:
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
команда, потому что эта команда принимает только выражения генератора, которые содержат абсолютный путь.]