我了解到SYSTEM
的{{1}}参数是在用target_include_directories
作用域关键字列出目录之前给出的,因此,据我了解您需要将PRIVATE|INTERFACE|PUBLIC
分为SYSTEM和非SYSTEM。
但是,cmake可以让您写这种东西:
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}
)
,则之后的所有内容都将被视为SYSTEM
标头,这意味着在我的示例中SYSTEM
标头将已经被视为foo/api/include
他们似乎只使用SYSTEM
关键字。
谢谢。