CMake構建OpenGL項目

一.概要

咱們在用CMake構建一個工程(項目)的時候,須要明白以下幾件事情:
A.項目源代碼在哪裏?
B.項目頭文件在哪裏?
C.怎麼生成靜態或者動態庫及庫的位置?
D.程序連接的靜態庫在哪裏?
E.項目中用到的已編譯好的靜態庫庫和實時編譯的庫與項目的依賴關係?
若是上面這幾件事你知道怎麼作了,多大的工程就都不是問題了。其實主要是明白庫的編譯、連接的工做機制,若是不熟悉,推薦看《深刻理解計算機系統》和《程序員的自我修養》這兩本書,講解得很好。對於CMake這種工具的學習,我的以爲在用中學、有需求時再學是最有效的,下面就幾種我時常碰到的項目結構的構建進行說明。程序員

二.CMake構建OpenGL項目

這個OpenGL項目依賴glfw、glew、glm以及opengl核心庫等庫文件,文件目錄以下:
這裏寫圖片描述
其中,如上圖所示的CMakeLists.txt文件內容爲:markdown

#爲項目配置CMake的總入口,設置一些全局的變量
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project (SUMMARY_DEBUG)

#SUMMARY_DEBUG_SOURCE_DIR這個變量是在指定項目名稱爲SUMMARY_DEBUG後自動生成的變量,
#指的是咱們在CMake GUI中爲項目指定的源目錄

#設置GLFW庫的頭文件目錄
set(GLFW3_INCLUDE_DIR ${SUMMARY_DEBUG_SOURCE_DIR}/opengl_helper/include/GLFW)
#設置GLFW庫的庫文件路徑
set(GLFW3_LIBRARY ${SUMMARY_DEBUG_SOURCE_DIR}/opengl_helper/x64/libs/glfw3.lib)

#設置GLEW庫的頭文件目錄
set(GLEW_INCLUDE_DIR ${SUMMARY_DEBUG_SOURCE_DIR}/opengl_helper/include/GLEW)
#設置GLEW庫的庫文件目錄
set(GLEW_LIBRARY ${SUMMARY_DEBUG_SOURCE_DIR}/opengl_helper/x64/libs/glew32.lib)

#設置glm庫的頭文件目錄,改庫不須要預先進行編譯,能夠直接使用
set(GLM_INCLUDE_DIRS ${SUMMARY_DEBUG_SOURCE_DIR}/opengl_helper/include/glm)

#將上述的頭文件目錄添加到一個列表變量之中
list( APPEND SUMMARY_DEBUG_INCLUDE ${GLM_INCLUDE_DIRS} )
list( APPEND SUMMARY_DEBUG_INCLUDE ${GLFW3_INCLUDE_DIR} )
list( APPEND SUMMARY_DEBUG_INCLUDE ${GLEW_INCLUDE_DIR} )

#將上述的庫文件目錄添加到一個列表變量之中
list( APPEND SUMMARY_DEBUG_LIBS ${GLFW3_LIBRARY} )
list( APPEND SUMMARY_DEBUG_LIBS ${GLEW_LIBRARY} )

#利用find_package命令找到OpenGL
find_package( OpenGL REQUIRED )
list( APPEND SUMMARY_DEBUG_LIBS ${OPENGL_gl_LIBRARY} )

#設置項目的頭文件包含目錄
include_directories( ${SUMMARY_DEBUG_INCLUDE} )

#設置子目錄
add_subdirectory(main_project)

這裏寫圖片描述
其中,如上圖所示的main_project中的CMakeLists.txt文件內容爲:工具

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project (main_project)

#在當前目錄下搜索頭文件及源文件
file(GLOB_RECURSE CURRENT_HEADERS  *.h *.hpp)
file(GLOB CURRENT_SOURCES  *.cpp)
#爲頭文件和源文件進行分組
source_group("Include" FILES ${CURRENT_HEADERS}) 
source_group("Source" FILES ${CURRENT_SOURCES}) 

add_executable(main_project ${CURRENT_HEADERS} ${CURRENT_SOURCES} )
#設置項目的外部依賴庫
target_link_libraries( main_project  ${SUMMARY_DEBUG_LIBS})

將CMakeLists.txt文件等準備好了以後,打開CMake GUI,設置以下:
這裏寫圖片描述
接着選擇編譯器而後分別進行Configure和Generate便可生成項目,而後用VS2013(我用的VS2013)打開項目便可運行。學習

三.項目源碼

演示所用的例子的源碼(包含全部的依賴庫和着色器文件)能夠經過以下地址下載:http://download.csdn.net/detail/linear_luo/9608080ui

相關文章
相關標籤/搜索