卓异,8l9906,徐成峰
目录
一、工具下载与安装
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
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论