简单的库倒是可以在命令行下 cmake 来生成makefile的,但像itk,vtk这么复杂的库还是使用cmake-gui的多次反复configure为好。
一、itk的编译
1、CMAKE_USE_PTHREADS 和 CMAKE_USE_WIN32_THREADS 只能有一个被勾选。我是去除了CMAKE_USE_PTHREADS的,默认两个都被勾选的,如果一开始没留意这个的话,make的时候会出现下面的错误信息。
[ 44%] Building CXX object Code/Common/CMakeFiles/ITKCommon.dir/itkBarrier.obj
In file included from e:/vitk/InsightToolkit/InsightToolkit-3.20.0/Code/Common/itkConditionVariable.h:31:0,from e:/vitk/InsightToolkit/InsightToolkit-3.20.0/Code/Common/itkBarrier.h:21,from e:/vitk/InsightToolkit/InsightToolkit-3.20.0/Code/Common/itkBarrier.cxx:17:e:/vitk/InsightToolkit/InsightToolkit-3.20.0/Code/Common/itkMutexLock.h:50:16: error: conflicting declaration 'typedef void* itk::MutexType' e:/vitk/InsightToolkit/InsightToolkit-3.20.0/Code/Common/itkMutexLock.h:46:25: error: 'itk::MutexType' has a previous declaration as 'typedef struct pthread_mut ex_t_* itk::MutexType'
make[2]: *** [Code/Common/CMakeFiles/ITKCommon.dir/itkBarrier.obj] Error 1
make[1]: *** [Code/Common/CMakeFiles/ITKCommon.dir/all] Error 2
make: *** [all] Error 2
2、另外,我还勾选了 BUILD_SHARED_LIBS, 把 CMAKE_BUILD_TYPE 的值设为release, 还指定了CMAKE_INSTALL_PREFIX
二、vtk 的编译
忘了保存编译的信息了,你确定哪个需要就勾选哪个吧,因为configure后,往往会产生新的变量,所以你要做好多次configure的心理准备,此处,我只列出错误信息
1、勾除掉 VTK_USE_VIDEO4WINDOWS,因为MinGW好像没有提供相关的头文件。
。。
参加资料:http://www.mitk.org/wiki/MinGW%20Instructions
三、igstk的编译:
Linking CXX executable ../../bin/TrackerDataLogger.exe
[ 99%] Built target TrackerDataLogger
Scanning dependencies of target SceneGraphVisualization
[100%] Building CXX object Utilities/SceneGraphVisualization/CMakeFiles/SceneGra
phVisualization.dir/igstkSceneGraph.obj
[100%] Building CXX object Utilities/SceneGraphVisualization/CMakeFiles/SceneGra
phVisualization.dir/igstkSceneGraphNode.obj
E:/vitk/IGSTK-4.4/Utilities/SceneGraphVisualization/igstkSceneGraphNode.cxx: In
constructor 'igstk::SceneGraphNode::SceneGraphNode()':
E:/vitk/IGSTK-4.4/Utilities/SceneGraphVisualization/igstkSceneGraphNode.cxx:24:5
1: error: cannot call constructor 'igstk::Transform::Transform' directly
E:/vitk/IGSTK-4.4/Utilities/SceneGraphVisualization/igstkSceneGraphNode.cxx:24:5
1: error: for a function-style cast, remove the redundant '::Transform'
make[2]: *** [Utilities/SceneGraphVisualization/CMakeFiles/SceneGraphVisualizati
on.dir/igstkSceneGraphNode.obj] Error 1
make[1]: *** [Utilities/SceneGraphVisualization/CMakeFiles/SceneGraphVisualizati
on.dir/all] Error 2
make: *** [all] Error 2
出现这种问题时,解决办法是修改源代码:找到文件 IGSTK-4.4/Utilities/SceneGraphVisualization/igstkSceneGraphNode.cxx
将第24行的 m_ParentTransform = igstk::Transform::Transform();换成 m_ParentTransform = igstk::Transform();
3103



被折叠的 条评论
为什么被折叠?



