在Cmake中将VTK目录包含为系统包含目录

3
我有一个项目,使用VTK作为外部库。在我的源代码中,我使用-Werror来确保这些问题总是被解决。为了在我的代码中进行这种“检查”,使用INCLUDE_DIRECTORIES指令加载外部库,并使用SYSTEM参数。但是如果某个外部库是通过CMakeLists.txt文件加载的(就像VTK一样)呢? 我无法将VTK指定为SYSTEM库,因此VTK警告显示为错误。是否有办法禁用包含库的警告?请注意,您需要保留HTML标记,并按照格式要求返回结果。

1
你如何“包含”CMakeLists.txt文件?您是否使用include命令? - niklasfi
1
这是在外部库使用cmake结构(如VTK、ITK)时可能包含的方式:INCLUDE(${VTK_USE_FILE}) - Paulo Ziemer
1
对于像Qt这样的非CMakeList库,我可以使用指令INCLUDE_DIRECTORIES在我的CMakeList中加载它,使用参数SYSTEM指示这些头文件来自系统(这样编译器就不会从这些“外部”头文件验证警告)。 - Paulo Ziemer
2个回答

2

VTK会自动添加include_directories,所以除非你修改了VTK的CMake文件并添加了该行,否则你很可能需要通过一些字符串操作来更改你的包含目录属性。对我而言,更快的方法是在VTK中使用include_directories更改该行,即lib/cmake/vtk-*/UseVTK.cmake - 这是你用include(${VTK_USE_FILE})引入的文件。我只是更改了这一行。

# Add include directories needed to use VTK.
include_directories(${VTK_INCLUDE_DIRS})

to

# Add include directories needed to use VTK.
include_directories(SYSTEM ${VTK_INCLUDE_DIRS})

看起来通过将 VTK 头文件标记为 SYSTEM 库,已经消除了警告。


2

find_package指令后面,你可以添加include_directories(SYSTEM ${VTK_INCLUDE_DIRS})指令。

find_package(VTK REQUIRED)
include_directories(SYSTEM ${VTK_INCLUDE_DIRS})
include(${VTK_USE_FILE})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接