Qt: 5.12.9
添加资源文件
CMakeLists.txt
..... qt5_add_resources(qrc_FILES ResourceFile.qrc) if(ANDROID) add_library(qtGUIDemo2CMake2 SHARED main.cpp dialog.cpp dialog.h dialog.ui ${qrc_FILES} ) else() add_executable(qtGUIDemo2CMake2 main.cpp dialog.cpp dialog.h dialog.ui ${qrc_FILES} ) endif() ......
主要就是在CMakeLists.txt中添加 qt5_add_resources(qrc_FILES ResourceFile.qrc), ResourceFile.qrc 是我创建的资源文件名称:
最后在add_library和add_executable添加 ${qrc_FILES}.
一般只在add_executable添加${qrc_FILES}就可以。
添加后就和正常获取资源文件一样了,资源文件路径以:开头
CMake添加模块
qt 有很多模块,项目中可以按需使用,如果用QMake编译, 在*.pro文件中添加模块很方便,比如添加QT并发模块,直接:
xxx.pro
QT += core gui concurrent
拿到QT模块全名称
PS:一般情况下个人感觉不用找模块名,比如concurrent最后在target_link_libraries时直接转成Qt5::Concurrent
如果是CMake编译,添加concurrent并发模块,首先需要找到模块全名,模块全名需要去Qt编译器路径中查找.
编译器路径一般是和Qt Creator 工具在同一个路径下:
例如我把QT安装在D:\developer\Qt5.12.9,Qt Creator就在D:\developer\Qt5.12.9\Tools\QtCreator\bin,各个QT编译器就在:D:\developer\Qt5.12.9\5.12.9:
QT编译器是在安装QT时选择的,例如我选择了两个个编译器 MSVC编译的Qt编译器(x86和x64)和MinGW编译的QT编译器:
随便进入一个编译器,因为目的是拿到concurrent模块名称,不同QT编译器下Qt模块名称都是一样的,例如我选择的mingw73_64,进入:D:\developer\Qt5.12.9\5.12.9\mingw73_64\lib\cmake目录,Qt5Concurrent就是concurrent模块名称,在添加.
把模块添加到CMakeLists.txt
还是拿添加concurrent模块举例.
在CMakeLists.txt中找到
find_package(Qt5 COMPONENTS Widgets Core REQUIRED)
在COMPONENTS 和REQUIRED中间添加Concurrent模块名称,如果是图形化程序,默认会添加两个模块: Widgets和Core,像这样:
find_package(Qt5 COMPONENTS Widgets Core Concurrent REQUIRED)
注意首字母大写.
在找到target_link_libraries命令,一般在CMakeLists.txt最下方:
target_link_libraries(qtGUIDemo2CMake2 PRIVATE Qt5::Widgets)
添加刚才找到的concurrent模块全名: Qt5Concurrent改成Qt5::Concurrent
target_link_libraries(qtGUIDemo2CMake2 PRIVATE Qt5::Widgets Qt5::Concurrent)
使用背景
想使用Clion 打开QT项目, Clion 不能直接打开Qt Creator项目(不支持Qmake,只支持CMake),用cmake 时,添加一个资源文件不会自动更新到CMakeLists.txt中,需要手动添加一下.
在Qt Creator 中新建一个QtResourceFile文件:
不过新建文件后没有在默认的项目视图中找到新增的资源文件, 需要切换到文件系统中查看:
标签:qrc,CMake,QT,编译器,添加,模块,Qt5 From: https://www.cnblogs.com/GengMingYan/p/16784100.html