logo头像

技术引领生活!

cmake创建Qt工程

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# CMakeLists.txt
cmake_minimum_required(VERSION 3.5...3.16)

project(myApp VERSION 1.0 LANGUAGES CXX)


set(CMAKE_CXX_STANDARD 11)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON) # 自动包含当前目录



find_package(QT NAMES Qt5 Qt6 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)

# 源文件
set(SOURCES
main.cpp
mainwindow.cpp
)

set(HEADERS
mainwindow.h
)

set(FORMS
mainwindow.ui
)

set(RESOURCES
resources.qrc
# 其他资源文件
)

##全局 添加 include 路径
# include_directories(
# "path/to/include"
# "another/path/to/include"
# )
## 设置变量(可选)
#set(OPENCV_INCLUDE_DIR "D:/opencv/build/include")
## 为特定目标添加包含路径
#target_include_directories(${PROJECT_NAME} PRIVATE ${OPENCV_INCLUDE_DIR})

##全局添加 lib 路径
#link_directories("path/to/lib")
## 设置变量(可选)
#set(OPENCV_LIB_DIR "D:/opencv/build/x64/vc14/lib")
## 为特定目标添加链接路径
#target_link_directories(${PROJECT_NAME} PRIVATE ${OPENCV_LIB_DIR})

# 生成可执行文件
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS} ${FORMS} ${RESOURCES})

# 链接 Qt 库
target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)


#cmake -DCMAKE_C_FLAGS="-I/D:/opencv/build/include" -DCMAKE_CXX_FLAGS="-I/D:/opencv/build/include -L/D:/opencv/build/x64/vc14/lib" ..

源文件 main.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <QApplication>
#include <QWidget>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

// Create a new instance of the main window
QWidget w;

// Show the main window
w.show();

// Run the application's event loop
return a.exec();
}

CMake 编译

这里是重点,要使用 Qt 的qtenv2.bat设置环境变量, 不然就要弄一堆 -DQt5_DIR=xxx -DQt6_DIR=xxx 之类的参数,很麻烦.

1
2
3
C:\Windows\System32\cmd.exe /A /Q /K E:\programes\Qt\Qt\6.10.1\mingw_64\bin\qtenv2.bat
cmake -S . -B build/release -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release
cmake --build build/release
支付宝打赏 微信打赏

您的支持是我前行的动力!