VS2022 Cmake项目构建 Qt

一.创建文件和配置CMakeLists

1.创建头文件MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
	class MainWindow;
}

class MainWindow : public QMainWindow
{
	Q_OBJECT

public:
	explicit MainWindow(QWidget* parent = nullptr);
	~MainWindow();

private:
	Ui::MainWindow* ui;
};

#endif // MAINWINDOW_H

2.创建源文件MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <iostream>

MainWindow::MainWindow(QWidget* parent) :
	QMainWindow(parent),
	ui(new Ui::MainWindow)
{
	ui->setupUi(this);
}

MainWindow::~MainWindow()
{
	delete ui;
}

3.创建UI文件 MainWindow.ui (我这是空白的)

4.创建demomain.cpp

#include <QApplication>
#include <iostream>
#include "mainwindow.h"


int main(int argc, char* argv[]) {
	QApplication app(argc, argv);
	MainWindow mainWindow;
	mainWindow.show();
	std::cout << "in func main" << std::endl;
	return app.exec();
}

5.创建CMakeLists.txt

# 项目特定的逻辑。
cmake_minimum_required (VERSION 3.8)
project (QtNodeUI VERSION 0.1 LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)   #设置C++标准。该命令将C++标准设置为必选,即在编译C++代码时,必须使用该标准

#set(CMAKE_PREFIX_PATH D:/The_New_Era/work_app/6.7.1/msvc2019_64)

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Core Gui)
message("Version :" ${QT_VERSION_MAJOR})
#将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径。
include_directories(inc)
#link_directories()

FILE(GLOB_RECURSE SOURCE_FILES inc/*.h  src/*.cpp ) 

# 设置静态库的输出目录
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
# 设置动态库的输出目录
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
# 存放可执行软件的目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
message("输出目录"${CMAKE_CURRENT_SOURCE_DIR})

# 将源代码添加到此项目的可执行文件。
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
	qt_add_executable(QtNodeUI
		${SOURCE_FILES}
	)
	elseif(${QT_VERSION_MAJOR} LESS 6)
		add_executable(QtNodeUI
			${SOURCE_FILES}
		)

endif()

target_link_libraries(QtNodeUI PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
#设置目标属性
set_target_properties(QtNodeUI PROPERTIES
    WIN32_EXECUTABLE false  # 是否存在cmd窗口
)

#https://zhuanlan.zhihu.com/p/630034777
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_finalize_executable(QtNodeUI)
endif()
# TODO: 如有需要,请添加测试并安装目标。

二.使用VS打开并运行 

1.我的文件和位置

2.vs打开

 

 

可以选择生成的exe文件运行。 

三.总结

1.在Qt中创建的CMakeLists.txt文件在vs中是可以不修改直接使用的(vs有Qt插件,没插件时没试过)。如果报错的地方是没找到Qt6xxx.cmake什么的,记得加:set(CMAKE_PREFIX_PATH "C:/Qt/6.5.3/msvc2019_64");路径根据自己的来。

## 1.find_package(Qt6 REQUIRED COMPONENTS Widgets)
find_package()找的是.cmake文件,Qt6 的位置是可以通过set(Qt6_DIR "C:/Qt/6.5.3/msvc2019_64/lib/cmake/Qt6")来设置自己的Qt6文件所在的位置。
REQUIRED COMPONENTS 指必须要找到的后面指定的.cmake文件,找不到就报错

来自以下文章 

http://t.csdnimg.cn/I8EkQhttp://t.csdnimg.cn/I8EkQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值