Когда CMake запускается, он заполняет несколько свойств (в основном метаданных) для целей, каталогов, исходных файлов, с которыми он взаимодействует. Есть даже глобальные свойства, определенные для текущего выполнения CMake. Полный, обширный список свойств находится в документации CMake . У цели на данный момент есть большинство свойств, но в вашем случае вас интересует каталог свойств здесь .
CMake предоставляет get_*
функции, позволяющие нам получить свойства, которые уже были определены:
get_directory_property()
: Используйте это, чтобы получить свойство очастности каталог , каталог, который уже был пройден CMake. get_target_property()
: используйте его для получения свойства, связанного с конкретным цель . Цель должна быть уже определена ранее в конфигурации CMake, или CMake должен знать об этом. get_property()
: команда, которую вы можете использовать для получения any тип свойства, но вы должны указать какой тип (например, GLOBAL
, DIRECTORY
, TARGET
и т. д.)
Чтобы узнать, является ли текущая область действия CMakeимеет родительскую область, эту информацию можно найти в свойстве каталога PARENT_DIRECTORY
. Это скажет нам, какой каталог является родительским текущего исходного каталога:
get_directory_property(MY_DIRECTORY_PARENT PARENT_DIRECTORY)