CMake教程之構建Qt平臺

一:構建環境

  關於Qt環境下的項目,這裏也使用了cmake進行構建,這樣可以減少對工程文件的依賴,同時可以做到跨平臺的使用。
  目前使用的平臺是:CMake3.16.4 + VS2015。

二:目錄結構

  國際慣例,直接上工程目錄結構:
  根目錄:
在這裏插入圖片描述
  source目錄:、
在這裏插入圖片描述

三:CMakeLists文件說明

  同樣的我們看一下根目錄的寫法:

cmake_minimum_required(VERSION 3.5.1)

project("EQt")
message(STATUS "${CMAKE_CURRENT_SOURCE_DIR}")

#設置對c++11的支持
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")


# 設置第三方頭文件
set(include_third ${CMAKE_CURRENT_SOURCE_DIR}/source/thirdlibs/include/)
include_directories(SYSTEM ${include_third})

# 設置第三方庫路徑
set(lib_boost 	${CMAKE_CURRENT_SOURCE_DIR}/source/thirdlibs/libs/widows/boost)
set(lib_opencv 	${CMAKE_CURRENT_SOURCE_DIR}/source/thirdlibs/libs/widows/opencv)
set(lib_tbb 	${CMAKE_CURRENT_SOURCE_DIR}/source/thirdlibs/libs/widows/tbb)
link_directories(${lib_boost} ${lib_opencv} ${lib_tbb})


# 配置Qt
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# 打開全局moc,目標關聯的.h,.cpp
set(CMAKE_AUTOMOC ON)
# 打開全局uic,目標關聯的.ui
set(CMAKE_AUTOUIC ON)
# 打開全局rcc,用於編譯資源文件
set(CMAKE_AUTORCC ON)
# 查找Qt庫文件
find_package( Qt5 REQUIRED 
    COMPONENTS Widgets Core Gui Qml 
)
include_directories(
    ${Qt5Widgets_INCLUDE_DIRS}
	${CMAKE_CURRENT_BINARY_DIR}
	${QT_USE_FILE}
    Qt5::Qml
)
add_definitions(${QT_DEFINITIONS})


add_subdirectory("source")

  目前沒有做平臺化區分,當前的CMakeLists.txt中未對linux平臺進行配置。後續在平臺移植下會進行補充和修改。

  source下的僅僅是對當前目錄文件的包含,所以不做過多說明。目前widget中是對qt項目的運用,所以直接看widget下的CMakeLists.txt:
在這裏插入圖片描述

project(widget)

FILE(GLOB_RECURSE HEAD
 *.h 
)

FILE(GLOB_RECURSE SOURCE 
    *.cpp
    *.ui
)
FILE(GLOB_RECURSE QRC
  *.qrc
)
FILE(GLOB_RECURSE RES
  *.*
)
source_group(widget FILES ${HEAD} ${SOURCE} ${QRC} ${RES}) 

add_library(${PROJECT_NAME} STATIC ${SOURCE_TREE} ${HEAD} ${SOURCE} ${QRC} ${RES})
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME})


#設置頭文件搜索目錄
include_directories(
	${CMAKE_SOURCE_DIR}/source/widget
)

四:測試

  根據上一篇的配置,進行vs工程的配置和構建,最後生成vs工程項目目錄如下:
在這裏插入圖片描述
  對widget項目進行編譯即可,因爲widget是靜態庫項目,所以可以看到生成的widget.lib庫即可。
在這裏插入圖片描述

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