标签:开发 官方文档 实践 直接 命名 nis namespace 产生 选项
目录
一、工具下载与安装
1. Qt
2. Visual Studio 2015
3. Cmake
二、C++及Qt项目构建
1. 基于VS构建Qt项目
2. 基于Qt Creater构建,在VS中使用
用Qt Creater构建项目
用VS开发Qt Creater生成的项目
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
标签:开发 官方文档 实践 直接 命名 nis namespace 产生 选项
原文地址:https://www.cnblogs.com/JoyPoint/p/10549774.html