使用 ITK, CMake 进行编程, 基本过程如下:
建立文件夹 D:/I_VTK/test/src, D:/I_VTK/test/bin, src 用来存放源程序, bin 为程序编译目标
如下 Hello ITK 示例.
1. 建立 D:/I_VTK/test/src/HelloITK, D:/I_VTK/test/bin/HelloITK
2. 在 HelloITK 目录中,新建文件 HelloWorld.cxx,编写源代码. 新建文件 CMakeLists.txt, 用于 CMake 进行配置.
3. HelloWorld.cxx:
#include "itkImage.h"
#include <iostream>
int main()
{
//声明图像类型, 像素类型为 unsigned short, 图像维数为 3维
typedef itk::Image< unsigned short, 3 > ImageType;
//新建一幅图像, 并将其赋值给图像类的智能指针, 智能指针不需要 delete
//自动释放, ITK 中每一个类基本都提供智能指针, 且使用New() 实例化. 除少数极小的对象不使用智能指针
ImageType::Pointer image = ImageType::New();
std::cout << "ITK Hello World !" << std::endl;
return 0;
}
4. CMakeLists.txt:
CMAKE_MINIMUM_REQUIRED(VERSION 2.4) //CMake 最小版本
PROJECT(HelloWorld) //工程名
FIND_PACKAGE(ITK) //寻找 ITK
IF(ITK_FOUND)
INCLUDE(${ITK_USE_FILE}) //找到则使用, 否则需要手动指定 D:/I_VTK/ITK/ITK-3.14.0-bin
ELSE(ITK_FOUND)
MESSAGE(FATAL_ERROR
"ITK not found. Please set ITK_DIR.") //没有找到,弹出对话框提示
ENDIF(ITK_FOUND)
ADD_EXECUTABLEHelloWorld HelloWorld.cxx ) //生成可执行文件名, 及需要编译的源文件
//该工程所需要的 ITK 子系统, 该句会生成工程所需的 ITk lib库文件
TARGET_LINK_LIBRARIES(HelloWorld ITKCommon)
注,CMakelists.txt 中是不能出现上述注释的。
5. 使用 CMake 进行配置.
Where is the source code: 点击 Browse, 选择 D:/I_VTK/test/src/HelloITK
Where to build the binaries: 点击 Browse, 选择 D:/I_VTK/test/bin/HelloITK
Configure, 如果没有找到 ITK 路径, 则需要手动指定: D:/I_VTK/ITK/ITK-3.14.0-bin
或指定为 D:/I_VTK/ITK/ITK-3.14.0,该路径寻找 ITK 头文件。
配置成功后, 点击 OK.
6. 打开 D:/I_VTK/test/bin/HelloITK, 使用 VS 2005 编译: HelloWorld.sln
至此成功.
需要注意的是:
1. CMakelist.txt 的编写, 主要是 TARGET_LINK_LIBRARIES(HelloWorld ITKCommon)
工程中用到 ITK 的哪一个子系统, 这里就需要添写那一个, D:/I_VTK/ITK/ITK-3.14.0/Examples
示例程序提供了大量 ITK 的使用,可以参考.
2.可以不使用 CMake 进行开发. 这样的话, 就需要手动添加工程所依赖的 lib, xxx.h .
1)按照通常的方法建立一个 C++ Console 工程, 编写代码.
2)tool->option->Projects and Solutions->VC++ Directories 选择Include files, 然后在下面
添加所有需要的 ITK 头文件非常的多, 复杂点的程序可能用到所有路径: D:/I_VTK/ITK/ITK-3.14.0/Code
目录下所有子目录,以及子目录的子目录
不使用 CMAKE 自动配置,最好在编译 ITK 后,编译 INSTALL 工程,这样 include, lib 会安装到
单独的目录,结构比较清晰。
3)添加所依赖的 lib: Project-->Properties-->Linker-->Input, 选择 Additional Dependencies,
添加所需 lib 文件,包括所依赖的 Windows 头文件. 可以查看一个使用前面的方法生成的工程, 可以看到
依赖的 lib 非常的多,非常麻烦, 所以最好使用 Cmake 进行自动配置.