qt

1.控制台程序

1.src/main.cpp

1
2
3
4
5
6
7
8
9
10
#include <QCoreApplication>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug("hello,world\n");
qDebug() << "hi:" << "see you";
return a.exec();
}

2.CMakeLists.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
cmake_minimum_required(VERSION 3.24.0)

# 设置项目名称和版本
project(MyQtApp VERSION 0.1 LANGUAGES CXX)

#系统变量中没有Qt目录需要添加路径
option(USE_STATIC_QT "是否使用静态Qt" OFF)

if(USE_STATIC_QT)
#set(CMAKE_PREFIX_PATH "C:/D/Program/Qt/6.2.4/MSVC2022_x64_static_624_Release")
#set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
else()
#set(CMAKE_PREFIX_PATH "C:/D/Program/Qt/6.9.0/mingw_64")
endif()

# 查找 Qt 6 包
find_package(Qt6 REQUIRED COMPONENTS Core)

# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 添加可执行文件
set(SOURCE src/main.cpp)
add_executable(${PROJECT_NAME} ${SOURCE})
# 输出到项目下的 bin 文件夹
set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")

# 链接 Qt 库
target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Core )

3.CMakePresets.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{
"version": 3,
"configurePresets": [
{
"name": "base",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"cacheVariables": {
"CMAKE_EXPORT_COMPILE_COMMANDS": "YES"
}
},
{
"name": "qt-static-release",
"displayName": "Qt 6.2.4 MSVC Static Release",
"inherits": "base",

"architecture": { "value": "x64", "strategy": "external" },
"toolset": { "value": "host=x64", "strategy": "external" },
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_C_COMPILER": "cl.exe",
"CMAKE_CXX_COMPILER": "cl.exe",
"CMAKE_PREFIX_PATH": "C:/D/Program/Qt/6.2.4/MSVC2022_x64_static_624_Release",
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreaded"
},
"vendor": {
"jetbrains.com/clion": {
"toolchain": "MSVC"
}
}
},
{
"name": "qt-mingw-dynamic",
"displayName": "Qt 6.9.0 MinGW Dynamic",
"inherits": "base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_PREFIX_PATH": "C:/D/Program/Qt/6.9.0/mingw_64",
"CMAKE_C_COMPILER": "gcc.exe",
"CMAKE_CXX_COMPILER": "g++.exe"
},
"vendor": {
"jetbrains.com/clion": {
"toolchain": "Qt_Mingw"
}
}
}
],
"buildPresets": [
{ "name": "qt-debug", "configurePreset": "qt-mingw-dynamic" },
{ "name": "qt-release", "configurePreset": "qt-static-release" }
]
}

4.windows下使用mingw动态库编译

编译脚本build_debug.bat

1
2
3
4
5
6
7
8
@echo off
:: 1. 自动挂载 mingw 环境
call "C:\D\Program\Qt\6.9.0\mingw_64\bin\qtenv2.bat"
:: 2. 运行 CMake Preset
cmake --preset=qt-mingw-dynamic
:: 3. 运行构建
cmake --build --preset=qt-mingw-dynamic -j8
pause

5.windows下使用msvc静态库编译

编译脚本build_realse.bat

1
2
3
4
5
6
7
8
@echo off
:: 1. 自动挂载 MSVC 环境
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
:: 2. 运行 CMake Preset
cmake --preset=qt-static-release
:: 3. 运行构建
cmake --build --preset=qt-static-release -j8
pause

6.clion中使用

ToolChain中添加两个脚本与选择编译器

1
2
3
4
5
6
7
#MSVC
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
#编译器选择cl.exe

#Qt_Mingw
#只使用gcc/g++编译的不运行的话无需添加
C:\D\Program\Qt\6.9.0\mingw_64\bin\qtenv2.bat

MSVC编译需在CMakePresets.json中启用Qt_MSVC

1
2
3
4
5
"vendor": {
"jetbrains.com/clion": {
"toolchain": "MSVC"
}
}