VTK CMakeList 从头文件名找到对应module

find_package(VTK 9.3 REQUIRED COMPONENTS
                    CommonCore
                    CommonColor
                    CommonComputationalGeometry
                    CommonDataModel
                    CommonExecutionModel
                    CommonMath
                    CommonMisc)

当需要写vtk CMakeList的时候,或者在vtk中增加了额外的引用时需要更新CMakeList的时候,

你发现这里需要的是module名,那么怎么根据#include的头文件名找到对应的module呢?

VTK有如下Modules

Modules - VTK documentation

1. 自动生成

在vtk源程序中vtk-source\VTK-9.3.1\Utilities\Maintenance有FindNeededModules.py

python3 "$VTK_ROOT/Utilities/Maintenance/FindNeededModules.py" -j $VTK_ROOT/build/modules.json -s vtkHelloworld.cpp

可以自动生成所需要的cmakelist find package.

How to determine the CMake VTK "COMPONENTS" necessary for a class? - Development - VTK

这里有相关的讨论

2. 手动查找

可以参考VTK学习笔记(九)VTK中的各个模块_vtkmodules-优快云博客

在vtk的安装目录下搜所要的vtk class名.

比如要找vtkDijkstraGraphGeodesicPath所对应的module

发现在vtk-install\Filters\Modeling\FiltersModeling.dir\Debug这个路径下,那么FiltersModeling就是所对应的module

### VTK相关的CMakeLists.txt配置示例 对于涉及VTK库的应用程序开发而言,`CMakeLists.txt` 文件起着至关重要的作用。通过此文件可以指定项目所需依赖项以及如何链接这些外部资源至最终可执行文件。 #### 配置最小版本需求并命名项目 首先声明最低支持的CMake版本,并给定项目的名称: ```cmake cmake_minimum_required(VERSION 3.10 FATAL_ERROR)[^3] project(VTKExample LANGUAGES CXX) ``` 这里选择了3.10作为最低版本号,因为这是官方推荐用于处理现代C++特性和模块化包管理器的一个稳定起点[^4]。 #### 查找必要的组件 接着要让CMake知道应用程序将会利用哪些第三方库;针对VTK来说,则需调用 `find_package()` 函数来定位安装路径及其关联头文件位置: ```cmake find_package(VTK COMPONENTS vtkCommonCore vtkFiltersSources vtkRenderingOpenGL2 vtkInteractionStyle REQUIRED) include(${VTK_USE_FILE}) ``` 上述代码片段尝试加载核心功能(`vtkCommonCore`)、几何体生成过滤器(`vtkFiltersSources`)、渲染引擎(`vtkRenderingOpenGL2`) 和交互样式(`vtkInteractionStyle`)四个主要部分[^5]。 #### 定义源码列表与目标二进制文件 为了简化维护工作量,通常会采用辅助函数自动收集所有`.cpp`扩展名下的实现单元: ```cmake aux_source_directory(. SRC_LIST) add_executable(RenderCylinder ${SRC_LIST}) target_include_directories(RenderCylinder PRIVATE ${VTK_INCLUDE_DIRS}) target_link_libraries(RenderCylinder PRIVATE ${VTK_LIBRARIES}) ``` 这段脚本不仅能够动态获取当前目录内的全部CPP文档,还将它们打包成名为`RenderCylinder` 的独立运行实体,同时确保编译期间能正确访问VTK所提供的公共接口定义及静态/共享库档案[^1]。 #### 设置标准特性集 最后一步是告知编译器遵循哪一个ISO C++标准草案进行语法解析: ```cmake set_target_properties(RenderCylinder PROPERTIES CXX_STANDARD 17) set_target_properties(RenderCylinder PROPERTIES CXX_STANDARD_REQUIRED ON) ``` 以上设置强制启用了C++17模式,从而允许开发者充分利用最新一代编程语言所带来的便利之处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值