разделить каталоги target_include_ на SYSTEM и несистемные - PullRequest
0 голосов
/ 15 апреля 2019

из cmake doc Я понимаю, что аргумент SYSTEM для target_include_directories должен быть задан один раз, прежде чем каталоги будут перечислены с ключевыми словами области действия PRIVATE|INTERFACE|PUBLIC, поэтому, насколько я понимаю, вам нужноразделите target_include_directories на СИСТЕМНЫЕ и несистемные.

Однако , cmake позволяет вам писать такие вещи:

target_include_directories(foo_target
    PRIVATE
        foo/src/include
    SYSTEM PRIVATE
        ${SOME_LIB_INCLUDE_DIRS}
    PUBLIC
        foo/api/include
    SYSTEM PUBLIC
        ${LIB2_INCLUDE_DIRS}
)

Я не понимаю, почему cmake позволяет вам это делать и каковы должны быть эффектытакого рода утверждения.
Я где-то читал, что если вы напишите SYSTEM один раз, то все после этого будет рассматриваться как SYSTEM заголовки, что означает, что в моем примере foo/api/include заголовки уже будут обрабатываться как SYSTEM, хотяони, похоже, используют только ключевое слово PUBLIC.
Спасибо.

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