在使用 CMake 构建 Qt 界面应用程序时,你需要设置 CMakeLists.txt 文件来指定项目配置、源文件、库依赖等。以下是一个简单的示例,展示了如何创建一个包含 Qt 界面(使用 QWidget)的 Qt 项目,并使用 CMake 进行构建。
1. 创建项目目录结构
首先,创建一个项目目录结构,例如:
MyQtApp/
├── CMakeLists.txt
├── main.cpp
├── mainwindow.cpp
├── mainwindow.h
├── mainwindow.ui
└── resources/
└── MyQtApp.qrc
2. 编写 CMakeLists.txt
在 MyQtApp/
目录下创建 CMakeLists.txt
文件,内容如下:
cmake_minimum_required(VERSION 3.15) # 最低支持版本
project(MyApp VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11) # 设置标准为C++17
set(CMAKE_AUTOMOC ON) # 自动处理Moc(Meta Object Compiler)
set(CMAKE_AUTOUIC ON) # 自动生成ui对应的头文件(.h)
set(CMAKE_AUTORCC ON) # 如果需要资源文件则启用Rcc(Resource Compiler)
find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED) # 查找所需模块
#生成的可执行文件可双击运行
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -no-pie")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -no-pie")
# Specify source files
set(SOURCES
main.cpp
mainwindow.cpp
)
set(HEADERS
mainwindow.h
)
set(UIS
mainwindow.ui
)
# Add executable
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS} ${UIS} ${RESOURCES_RCC})
target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets) # 连接库
3. 编写源文件
main.cpp、mainwindow.h、mainwindow.cpp、mainwindow.ui 均使用QT默认生成的文件,可参考编写;
resources/MyQtApp.qrc
如果不需要资源文件,可以省略这部分。如果需要,可以创建一个简单的资源文件,例如:
<RCC>
<qresource prefix="/">
<file>images/logo.png</file>
</qresource>
</RCC>
4. 构建和运行
打开终端,找到项目目录,即CMakeLists.txt所在目录,然后运行以下命令:
mkdir build
cd build # 创建build目录用于存放中间产物等信息避免污染原代码树
rm -rf *
cmake .. # 调用cmake解析配置初始化构建环境
make # 或者'msvc'等相关IDE指定操作实际完成编译链接全过程
cd ..
./build/MyApp # 启动应用程序检查效果是否正常工作
注意事项
- Qt 版本:确保你安装了 Qt5,并且
qt5-default
(在 Debian/Ubuntu 上)或相应的开发包已经安装。 - CMake 版本:确保你使用的 CMake 版本支持
find_package
和 Qt5 的模块。 - Qt Designer:你可以使用 Qt Designer 创建复杂的 UI 文件,并将其保存到
mainwindow.ui
中。