目錄html
1、工具下載與安裝windows
1. Qt架構
2. Visual Studio 2015編輯器
3. Cmakeide
2、C++及Qt項目構建工具
1. 基於VS構建Qt項目學習
2. 基於Qt Creater構建,在VS中使用測試
用Qt Creater構建項目ui
用VS開發Qt Creater生成的項目this
3. 基於Cmake構建
用CMake-Gui構建
用批處理方式進行Cmake構建項目
===========================================
目前項目是儘可能利用開源項目爲基礎,考慮到跨平臺,以及後期便於開發的協同和延續,開發語言基於C/C++、UI基於QT(5.7.1),集成開發環境(IDE)使用Visual Studio(2015),開發階段基於Windows(WIN10)操做系統(32位 or 64位,若是內存大於4G,建議選64位),項目構建工具使用Cmake。
https://visualstudio.microsoft.com/zh-hans/
https://visualstudio.microsoft.com/zh-hans/downloads/
https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
#include "QtGuiDemo.h" #include <QtWidgets/QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); QtGuiDemo w; w.show(); return a.exec(); }
#pragma once #include <QtWidgets/QMainWindow> #include "ui_QtGuiDemo.h" class QtGuiDemo : public QMainWindow { Q_OBJECT public: QtGuiDemo(QWidget *parent = Q_NULLPTR); private: Ui::QtGuiDemoClass ui; };
#include "QtGuiDemo.h" QtGuiDemo::QtGuiDemo(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); }
#include "qtguidemo.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); QtGuiDemo w; w.show(); return a.exec(); }
#ifndef QTGUIDEMO_H #define QTGUIDEMO_H #include <QMainWindow> namespace Ui { class QtGuiDemo; } class QtGuiDemo : public QMainWindow { Q_OBJECT public: explicit QtGuiDemo(QWidget *parent = 0); ~QtGuiDemo(); private: Ui::QtGuiDemo *ui; } #endif // QTGUIDEMO_H
#include "qtguidemo.h" #include "ui_qtguidemo.h" QtGuiDemo::QtGuiDemo(QWidget *parent) : QMainWindow(parent), ui(new Ui::QtGuiDemo) { ui->setupUi(this); } QtGuiDemo::~QtGuiDemo() { delete ui; }
1.#設置cmake版本號 2.cmake_minimum_required(VERSION 3.4.0) 3. 4.#設置工程名稱 5.project(QtGuiDemo) 6. 7.#設置工程包含當前目錄,非必須 8.set(CMAKE_INCLUDE_CURRENT_DIR ON) 9. 10.#打開全局moc,設置自動生成moc文件,必定要設置 11.set(CMAKE_AUTOMOC ON) 12.#打開全局uic,非必須 13.set(CMAKE_AUTOUIC ON) 14.#打開全局rcc,非必須,如需打開,注意修改33行的qrc文件名 15.#set(CMAKE_AUTORCC ON) 16. 17.#查找須要的Qt庫文件,最好每個庫都要寫,Qt也會根據依賴關係自動添加 18.find_package(Qt5Widgets) 19.find_package(Qt5Core) 20.find_package(Qt5Gui) 21. 22.#查找當前文件夾中的全部源代碼文件,也能夠經過Set命令將全部文件設置爲一個變量 23.FILE(GLOB SRC_FILES "./*.cpp") 24.#查找設置當前文件夾中全部的頭文件 25.FILE(GLOB HEAD_FILES "./*.h") 26.#查找設置當前文件夾中全部的ui文件 27.FILE(GLOB UI_FILES "./*.ui") 28. 29.#經過Ui文件生成對應的頭文件,必定要添加 30.qt5_wrap_ui(WRAP_FILES ${UI_FILES}) 31. 32.#添加資源文件,非必須,一旦採用,注意修改相應的qrc文件名 33.#set(RCC_FILES rcc.qrc) 34. 35.#將ui文件和生成文件整理在一個文件夾中,非必須 36.source_group("Ui" FILES ${UI_FILES} ${WRAP_FILES} ) 37. 38.#建立工程文件 39.add_executable(${PROJECT_NAME} ${SRC_FILES} ${HEAD_FILES} ${RCC_FILES} ${WRAP_FILES}) 40. 41.#添加Qt5依賴項 42.target_link_libraries(${PROJECT_NAME} Qt5::Widgets Qt5::Core Qt5::Gui)
在項目開發初期,會由於各類配置或代碼問題,須要常常進行CMake,每次都用CMake-Gui執行會比較麻煩,在此,能夠利用批處理方式執行CMake項目構建。以CMakeQtGuiDemo項目爲例。
@echo off rem 獲取項目CMakeLists.txt文件所在目錄 set CURRENT_CMAKE_DIR=%~dp0 rem 獲取項目CMakeLists.txt文件所在目錄的名稱,用於新建構建目錄 for /f "delims=" %%i in ("%cd%") do set CURRENT_DIR_NAME=%%~ni rem 到項目CMakeLists.txt文件所在目錄的上級目錄 cd.. rem 獲取當前目錄,%cd%與%~dp0的區別在於獲取的目錄尾部少了「\」 set CURRENT_DIR=%cd% rem 設置須要外部構建的目錄名稱,在源文件目錄後面加「_build」 set PROJECT_NAME=%CURRENT_DIR_NAME%_build rem 設置外部構建的完整路徑 set CURRENT_NEW_DIR=%CURRENT_DIR%\%PROJECT_NAME% echo Cmake in [%CURRENT_NEW_DIR%] rem 判斷是否已經存在外部構建的路徑,若是存在刪除 if exist %CURRENT_NEW_DIR% ( rd /s/q %CURRENT_NEW_DIR% ) rem 新建外部構建目錄 mkdir %CURRENT_NEW_DIR% rem 進入新建的外部構建目錄,用於Cmake生成項目文檔 cd %CURRENT_NEW_DIR% rem 根據編譯環境須要設定VS版本,%CURRENT_CMAKE_DIR%用於指定CMakeLists.txt所在目錄,-G 用於指定makefile的生成工具 ::cmake ../ -G "Visual Studio 14 2015 Win64" ::cmake ../ -G "Visual Studio 14 2015 ARM" cmake %CURRENT_CMAKE_DIR% -G "Visual Studio 14 2015" cd.. rem 查看構建項目的目錄樹 tree %CURRENT_NEW_DIR% /f pause