首页 > 解决方案 > 有没有办法为 FetchContent 目标获取 -isystem ?

问题描述

NO_SYSTEM_FROM_IMPORTED告诉我们IMPORTED 目标自动获取-isystem. 这是否也适用于使用FetchContent引入项目的目标?

如果不是(我认为是因为在获取的目标上出现了整洁的警告问题),那么获得-isystem这些目标的最佳方法是什么?

标签: cmakeincludeclang-tidy

解决方案


这实际上非常简单(感谢@Tsyvarev):

include (FetchContent)

set (FETCHCONTENT_QUIET FALSE)

FetchContent_Declare (
  Catch2
  GIT_REPOSITORY https://github.com/catchorg/Catch2.git
  GIT_TAG v2.4.2
  GIT_PROGRESS TRUE
)

FetchContent_MakeAvailable (Catch2)

### here is what makes all include directories -isystem
get_target_property(CATCH2_IID Catch2 INTERFACE_INCLUDE_DIRECTORIES)
set_target_properties(Catch2 PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${CATCH2_IID}")

推荐阅读