在CMake中,您可以使用
TARGET_INCLUDE_DIRECTORIES()
函数将包含目录添加为系统包含目录(即使用-isystem
),以避免由第三方代码引起的警告弹出:TARGET_INCLUDE_DIRECTORIES(mytarget
SYSTEM
${3rdPartyLib_INCLUDE_DIR})
我更喜欢使用TARGET_LINK_LIBRARIES
,它还可以使来自第三方库的包含目录可用。据我所知,TARGET_LINK_LIBRARIES
不支持SYSTEM
修饰符,将这些目录添加为系统包含目录。
我理解有错吗?
是否有方法使:
TARGET_LINK_LIBRARIES(mytarget
${3rdPartyLib_INCLUDE_DIR})
使用-isystem
吗?(或者其他抑制来自3rdPartyLib
警告的方法。)
TARGET_LINK_LIBRARIES()
不完整,而使用TARGET_INCLUDE_DIRECTORIES
。 - franstarget_link_libraries
链接到库目标。将包含目录传递给它是没有意义的。 - starball