在CMake中,find_package命令用于查找并加载外部库或框架,为项目提供所需的依赖支持。下面我将详细解释如何在CMake中使用find_package来查找Qt库,并提供示例代码和故障排除方法。 1. find_package在CMake中的用途 find_package命令主要用于查找并加载指定的外部库或框架。它会自动在CMake的模块路径(MODULE_PATH)中搜索...
NO_DEFAULT_PATH:可选参数,用于禁用find_package命令的默认路径搜索。默认情况下,find_package命令会在一些预定义的路径中搜索库或框架。如果指定了该参数,find_package命令将只使用CMAKE_PREFIX_PATH和CMAKE_FRAMEWORK_PATH中指定的路径进行搜索。 find_package(MyLib NO_DEFAULT_PATH) 上述代码表示禁用find_package命...
同理,find_package(Qt5) 则是会去找名为 Qt5Config.cmake 的文件。 这些形如 包名+ Config.cmake 的文件,我称之为包配置文件。 Qt5Config.cmake 是在安装Qt5 时,随 libQt5Core.so 等实际的库文件,一起装到系统中去的。 以Arch Linux 系统为例: 包配置文件位于/usr/lib/cmake/Qt5/Qt5Config.c...
find_package(Qt5 COMPONENTS Core Gui Qml Quick REQUIRED) Components后面加的就是这个工程中会用到的Qt模块,例如上面就用到了Core、Gui、Qml、Quick这几个模块,也是一般一个Qt Quick程序必须用到的几个模块。 打开相关自动选项 Qt Quick程序中的QRC资源文件需要用rcc来进行预处理,生成相应.h和.cpp文件。QObject...
深入了解find_package之后,我们就明白COMPONENTS其实是一个选项,列出来了必选的模块。 一般我们不会在CMakeLists里面硬编码CMAKE_PREFIX_PATH,推荐通过环境变量找到模块。 Qt的模块是放在Qt/5.15.2/clang_64/lib/cmake,所以我们只需要配置 QT_DIR=Qt/5.15.2/clang_64 ...
到这里,我们已经掌握了find_package()到这里,我们才真正可以应付大多数情况下cmake 编译了。 当然,一个库可能由好多个组件构成,cmake 可以单独引入这些组件 代码语言:javascript 复制 find_package(Qt55.1.0COMPONENTSWidgets Xml Sql) 引入了 Qt5 中的 Widgets Xml Sql 组件。
确保在调用find_package之前,你的系统已经正确安装了Qt5,并且CMAKE_PREFIX_PATH环境变量已经设置为Qt5的安装路径。这样CMake才能正确找到Qt5。 如果你的项目中使用了Qt特有的代码(如MOC、UI文件等),还需要在CMakeLists.txt中相应配置,例如启用AUTOMOC或使用qt5_wrap_ui处理UI文件。
2. 自己的库如何能被find_pakcage(xxx) cmake有两种方式让find_package(xxx)能找到库,如果没有找到会报错,如下: find_package(OpenCV)出现错误如下: CMake Warning at CMakeLists.txt:37 (find_package): By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has ...
网上很多CMake查找Qt方法都是过时的Qt4的方法。现在正确的、最新的方法是: find_package(Qt5 COMPONENTS Core Gui Qml Quick REQUIRED) Components后面加的就是这个工程中会用到的Qt模块,例如上面就用到了Core、Gui、Qml、Quick这几个模块,也是一般一个Qt Quick程序必须用到的几个模块。 打开相关自动选项 Qt Quick...