标签:开发 官方文档 实践 直接 命名 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