CMake编译Widget UI Qt程序

自从CMake被引入到KDE项目的编译系统中后,CMake的使用者日益增多,Qt也不例外,除了使用QMAKE编译Qt程序外,也可以使用CMake来编译Qt程序,并且CMake在使用上更灵活,特别是大型程序。


CMake对于Qt4和Qt5都支持,不过使用上有点差异,这里主要看下Qt5下使用CMake编译Qt程序。

官方文档链接: http://qt-project.org/doc/qt-5.0/qtdoc/cmake-manual.html

这里是针对CMake 2.8.9版本以及之后的版本。

对于一个Widget UI的Qt程序, 首先:

# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# Instruct CMake to run moc automatically when needed
set(CMAKE_AUTOMOC ON)

set(EXECUTABLE_OUTPUT_PATH  "${PROJECT_SOURCE_DIR}/bin")

# Find the QtWidgets library
find_package(Qt5Widgets)

假设我们的UI程序中的界面是通过Qt Designer 设计的,则接下来CMake的内容如下:

qt5_wrap_ui(ui_FILES gotocelldialog.ui)
add_ex
### 如何在ROS项目中使用CMakeLists.txt集成QT5 为了成功地将Qt5与ROS项目集成,需修改`CMakeLists.txt`文件以支持Qt5库和工具。以下是详细的配置过程[^1]: #### 修改 `CMakeLists.txt` 首先,在`CMakeLists.txt`顶部添加对Qt5的支持声明: ```cmake find_package(Qt5 COMPONENTS Widgets REQUIRED) ``` 这行命令会寻找并加载必要的Qt5模块。 接着定义用于编译Qt界面源码的宏指令: ```cmake set(CMAKE_AUTOMOC ON) # 自动处理moc预处理器 set(CMAKE_INCLUDE_CURRENT_DIR ON) # 包含当前目录作为头文件路径 ``` 随后指定链接器选项以便能够访问Qt5提供的功能: ```cmake target_link_libraries(${PROJECT_NAME} Qt5::Widgets) ``` 最后一步是确保所有UI文件(.ui),资源文件(.qrc),以及其他特定于Qt的数据可以被正确解析: ```cmake qt5_wrap_ui(UI_FILES your_widget.ui) add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${UI_FILES}) qt5_add_resources(RESOURCES resources.qrc) ``` 以上设置完成后,完整的`CMakeLists.txt`可能如下所示: ```cmake cmake_minimum_required(VERSION 3.0.2) project(your_project_name) # 寻找依赖项 find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs) find_package(Qt5 COMPONENTS Widgets REQUIRED) # 设置自动MOC, UIC 和 RCC 处理 set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) catkin_package() include_directories( include ${catkin_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ) file(GLOB SOURCES "src/*.cpp") file(GLOB HEADERS "include/*") # 编写 UI 文件到变量 qt5_wrap_ui(UI_FILES ui/your_widget.ui) # 添加可执行目标 add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS} ${UI_FILES}) # 链接所需的库 target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} Qt5::Widgets) install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) ``` 此模板展示了如何创建一个基于Qt的应用程序,并将其无缝融入ROS环境中运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值