用cmake生成利用VTK库类的visual
studio 2010 MFC工程
最近在学习利用VTK三维编程,但是发现,在国内,相关的知
识真的很少,在学习的过程中,遇到了很大的困难,所以就想
着把我学到的一些有用的知识写出来,供以后的学习的人参考,我也是一个新手,有不到之处,希望读者不吝赐教。这就是我
写这些的动机。以下的所有的所用的环境的操作系统是
windows xp sp3.
一,cmake简介:
cmake 即是cmake - Cross-Platform Makefile Generator.是一个
跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程),能够输出各种各样的makefile或者project文件。
用cmake生成工程的时候主要的依据是文件,其是一种脚本文件,有很简单的语法,cmake就是根据该文件的相关指示生成相应的工程的。
二,用cmake生成visual studio 2010 MFC工程的步骤和方法
1,首先用visual studio 2010新建一个MFC工程,可以是基于对话框的或者是基于文档的。
2,将生成的工程的目录下的<;工程名>.sln和<;工程名>.sdf 删除,PS:不删除也没有什么问题的,我建立的是工程的名字是VtkMFC,多文档的。
3,编辑 文件,就是一个文本文件。
#cmake版本的最低要求
cmake_minimum_required(VERSION 2.8)
#生成工程的名字
PROJECT(VtkMFC)
#查TVK的安装路径
FIND_PACKAGE(VTK)
IF(NOT VTK_DIR)
MESSAGE(FATAL_ERROR "Please set VTK_DIR.")
ENDIF(NOT VTK_DIR)
INCLUDE(${VTK_USE_FILE})
INCLUDE("${VTK_DIR}/GUISupport/ake") IF(VTK_MFC_DELAYLOAD_VTK_DLLS)
VTK_MFC_ADD_DELAYLOAD_FLAGS(CMAKE_EXE_LINKER_FLAGS
vtkMFC.dll
vtkRendering.dll
vtkIO.dll
vtkFiltering.dll
vtkCommon.dll
)
ENDIF(VTK_MFC_DELAYLOAD_VTK_DLLS)
#设置工程的源代码的变量,就是刚才生成的全部的MFC工程的全部的源文件
SET( VtkMFC_SRCS
ClassView.h
ClassView.cpp
FileView.h
FileView.cpp
MainFrm.h
MainFrm.cpp
OutputWnd.h
OutputWnd.cpp
<
Resource.h
stdafx.h
stdafx.cpp
targetver.h
ViewTree.cpp
ViewTree.h
VtkMFC.h
VtkMFC.cpp
<
VtkMFCDoc.h
为什么现在都用cmakeVtkMFCDoc.cpp
VtkMFCView.h
VtkMFCView.cpp
PropertiesWnd.cpp
PropertiesWnd.h
)
ADD_EXECUTABLE(VtkMFC WIN32 ${VtkMFC_SRCS})
IF(VTK_MFC_EXTRA_LIBS)
TARGET_LINK_LIBRARIES(VtkMFC ${VTK_MFC_EXTRA_LIBS}) ENDIF(VTK_MFC_EXTRA_LIBS)
TARGET_LINK_LIBRARIES(VtkMFC vtkMFC vtkRendering vtkIO vtkFiltering vtkCommon)
4,将文件放在…\VtkMFC\VtkMFC下,并建立文件夹bin,用来放置将来生成的工程文件。
5,用cmake生成工程
(1)运行cmake-gui,设置where is the source code为放置文件的文件目录下,设置where to build the binaries为刚才建立的文件夹bin
(2)点击configure,设置Specify the generator for this project 为visual studio 2010,然后finished
(3)等到在下面的状态栏上显示configured,再点击generate,待到下面的状态栏上显示generated,此时你的VtkMFC工程已经生成了。
(4)打开生成的MFC工程,直接编译,你就可以看到就和原来直接用visual studio 2010 直接生成的一样的一个空白的视图。
(5)在代码中你就可以使用VTK相关的库类了
其实还有其他的写法,就是在每个文件的下面就写一个文件,这时候在第一个中要用子文件夹的指令。
PS:还有就是我想解释下,为什么我们要用cmake来生成project,而不是直接配置,要知道任何的工程都是可以白手起家的。这是因为VTK的库类很多,仅仅靠人工是不容易搭建起来的,再就是即使搭建起来也要很多的时间。把宝贵的时间都浪费在毫无意义的事情上是不明智的选择。
PS:再就是我学习cmake的一点感悟,用cmake生成project就是将所有的源文件都一个不拉的加入将要生成工程的源文件变量中,cmake知道怎么使用这些文件,不用你自己操心,节省了我们很多的时间,为我们带来了很大的方便。
(注:可编辑下载,若有不当之处,请指正,谢谢!)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论