CMake цель INTERFACE_INCLUDE_DIRECTORIES автоматически добавляется в родительский INCLUDE_DIRECTORIES? - PullRequest
0 голосов
/ 04 февраля 2020

В каталоге "fred", который имеет CMakeLists.txt, который включает в себя:

add_library(fred)
...
target_include_directories(fred PUBLIC "inc")

Это заполняет целевое свойство INTERFACE_INCLUDE_DIRECTORIES для fred 'в c'

каталог, который вызывает add_subdirectory (fred), автоматически получает свое свойство INCLUDE_DIRECTORIES, к которому добавлено свойство freds INTERFACE_INCLUDE_DIRECTORIES ("in c"), или я должен сделать это вручную?

Я спрашиваю, так как у меня есть проект, который имеет две команды add_subdirectory, пути включения, добавленные одной, кажутся доступными для кода, но не другой, не уверен, что я что-то напутал или неправильно понял!

Заранее спасибо

1 Ответ

2 голосов
/ 04 февраля 2020

Каталоги включения будут распространяться на любую цель, которая ссылается на эту библиотеку. Это означает, что добавить подкаталог недостаточно. Вам также необходимо иметь

target_link_libraries(MyProject <PRIVATE|PUBLIC|INTERFACE> fred)

. Это добавит каталоги включения fred MyProject. Вы можете найти больше информации о target_link_libraries здесь.

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