из 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
.
Спасибо.