qt cmake编译,连接第三方库
时间: 2025-04-17 10:46:48 浏览: 25
### 如何在 Qt 项目中用 CMake 编译并链接第三方库
#### 设置最低 CMake 版本和定义项目名称
为了确保项目的兼容性和稳定性,建议设置一个较高的最小 CMake 版本。同时,在创建新项目时指定项目名称。
```cmake
cmake_minimum_required(VERSION 3.10)
project(MyQtProject VERSION 1.0 LANGUAGES CXX)
```
#### 查找并引入 Qt 组件
通过 `find_package` 来查找安装好的 Qt 库,并声明所需模块。对于仅需控制台的应用程序可以排除 GUI 模块;而对于图形界面应用,则应包含它。
```cmake
set(CMAKE_CXX_STANDARD 17)
if (NOT ANDROID AND NOT WIN32)
set(QT_NO_KEYWORDS 1)
endif()
find_package(Qt6 COMPONENTS Core Widgets REQUIRED) # 如果不需要GUI可改为Core ONLY
add_definitions(-DQT_DEPRECATED_WARNINGS)
include_directories(${Qt6_INCLUDE_DIRS})
link_directories(${Qt6_LIBRARY_DIRS})
target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Widgets) # 或者只是Qt6::Core取决于需求
```
#### 添加执行文件及其源代码列表
指明要构建的目标(通常是可执行文件),并将所有参与编译的 .cpp 文件列出来作为输入。
```cmake
file(GLOB SOURCES src/*.cpp)
add_executable(${PROJECT_NAME} ${SOURCES})
```
#### 连接第三方库
当涉及到外部依赖项如 OpenCV 或 Boost 等时,同样利用 `find_package()` 方法来定位这些库的位置,并将其加入到链接器指令当中去。
```cmake
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
# 对于Boost或其他类似的库也采取相同方式处理
find_package(Boost COMPONENTS system filesystem REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
```
以上步骤展示了如何在一个典型的 Qt+CMake 工程里集成第三方库的方法[^1][^2][^3]。值得注意的是实际操作过程中可能还需要调整某些特定平台上的配置选项或是解决可能出现的各种问题[^4]。
阅读全文
相关推荐


















