cmake生成利用VTK庫類的visual studio 2010 MFC工程

一,cmake簡介:

cmake 即是cmake - Cross-Platform Makefile Generator.是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程),能夠輸出各種各樣的makefile或者project文件。

用cmake生成工程的時候主要的依據是CMakeLists.txt文件,其是一種腳本文件,有很簡單的語法,cmake就是根據該文件的相關指示生成相應的工程的。

二,用cmake生成visual studio 2010 MFC工程的步驟和方法

1,首先用visual studio 2010新建一個MFC工程,可以是基於對話框的或者是基於文檔的。

2,將生成的工程的目錄下的<工程名>.sln和<工程名>.sdf 刪除,PS:不刪除也沒有什麼問題的,我建立的是工程的名字是VtkMFC,多文檔的。

3,編輯CMakeLists.txt 文件,就是一個文本文件。

#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/MFC/VTKMFCSettings.cmake") 
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 
Readme.txt 
Resource.h 
stdafx.h 
stdafx.cpp 
targetver.h 
ViewTree.cpp 
ViewTree.h 
VtkMFC.h 
VtkMFC.cpp 
VtkMFC.rc 
VtkMFCDoc.h 
VtkMFCDoc.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,將CMakeLists.txt文件放在 …\VtkMFC\VtkMFC下,並建立文件夾bin,用來放置將來生成的工程文件。

5,用cmake生成工程

(1)運行cmake-gui,設置where is the source code爲放置CMakeLists.txt文件的文件目錄下,設置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相關的庫類了

其實CMakeLists.txt還有其他的寫法,就是在每個文件的下面就寫一個CMakeLists.txt文件,這時候在第一個CMakeLists.txt中要用子文件夾的指令。

PS:還有就是我想解釋下,爲什麼我們要用cmake來生成project,而不是直接配置,要知道任何的工程都是可以白手起家的。這是因爲VTK的庫類很多,僅僅靠人工是不容易搭建起來的,再就是即使搭建起來也要很多的時間。把寶貴的時間都浪費在毫無意義的事情上是不明智的選擇。

PS:再就是我學習cmake的一點感悟,用cmake生成project就是將所有的源文件都一個不拉的加入將要生成工程的源文件變量中,cmake知道怎麼使用這些文件,不用你自己操心,節省了我們很多的時間,爲我們帶來了很大的方便

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章