Qt Creator:如何自动设置CMake软件包管理器

你可能知道,在CMake代码中使用第三方软件是通过包来完成的,使用find_package命令。find_package的作用就像它的名字一样:找到一个包。如果包不存在,它会将

Qt Creator:如何自动设置CMake软件包管理器

开始前先介绍一下我们的Qt商业控件:

  • QtitanRibbon| 下载试用: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
  • QtitanChart | 下载试用 :是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面。
  • QtitanNavigation | 下载试用 :模拟Microsoft Dynamics CRM-2016/Office 365导航界面和一组控件改善Qt.C ++应用程序用户体验的QtitanNavigation组件。

你可能知道,在CMake代码中使用第三方软件是通过包来完成的,使用find_package命令。

find_package的作用就像它的名字一样:找到一个包。如果包不存在,它会将<PackageName>_FOUND变量设置为FALSE,如果包是REQUIRED的,CMake配置会出错。

这就是包管理器的作用。包管理器的设置可以在CMake代码中完成,也可以通过硬编码特定的代码来完成,或者在配置CMake项目之前记录下需要如何设置环境。

包管理器自动设置

CMake从3.15版本开始,允许通过CMAKE_PROJECT_INCLUDE_BEFORE注入自定义代码,而不需要修改项目的CMake源代码。

Qt Creator 4.15版将在初始的cmake参数中插入这一行。

-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake  

auto-setup.cmake 是 Qt Creator 附带的一个 cmake 脚本,它将对以下包管理器进行自动设置:conan、vcpkg、自定义 CMake 包管理器,如 cpp-pm/hunter。

这个功能可以在Qt Creator的Options -> Build & Run -> CMake中关闭,然后取消选中 “Package manager auto-setup”。

Hello World项目

为了测试此功能,我将使用fmtlib / fmt库介绍一个Hello World项目。

CMakeLists.txt 看起来像这样:

cmake_minimum_required(VERSION 3.15)    project(hello-world)    add_executable(hello-world main.cpp)    find_package(fmt REQUIRED)  target_link_libraries(hello-world PRIVATE fmt::fmt)  

main.cpp 看起来像这样:

#include <fmt/core.h>    int main()  {      fmt::print("Привет мирn");      return 0;  }  

这是Qt Creator在构建和运行应用程序后的样子:

Qt Creator:如何自动设置CMake软件包管理器

Qt Creator 4.15获得了指定“工具的文本编解码器”的功能,需要将其设置为UTF-8IBM866才能在输出窗格中显示Приветмир消息。

Conan

使用conanfmt库放入项目就像创建conanfile.txt一样容易:

[requires]  fmt/7.1.3  [generators]  cmake_find_package  

CMake目标cmake_find_package需要使用conan生成器fmt::fmt。

在您的系统上获取conan就像运行一样容易:

pip3 install conan  

这假定你的系统上已经安装了python3。

Qt Creator的auto-setup.cmake负责为项目运行conan安装,并尽可能地让你的体验不那么痛苦。这得益于conan-cmake的使用,conan-cmake也是Qt Creator的附带工具。

如果你不想让conan自动设置,你可以将CMake变量QT_CREATOR_SKIP_CONAN_SETUP设置为TRUE。

vcpkg

使用vcpkgfmt库放入项目就像创建此vcpkg.json文件一样容易:

{    "name": "hello-world",    "version-string": "0.0.1",    "dependencies": [      "fmt"    ]  }  

设置以便在Qt Creator中使用就像运行一样容易:

> git clone https://github.com/microsoft/vcpkg  > .vcpkgbootstrap-vcpkg.bat  

以上命令将为vcpkg设置目录结构,并下载一个预制的vcpkg可执行文件。

Qt Creator的auto-setup.cmake需要在PATH环境变量中加入vcpkg.exe。

在Qt Creator 4.15中,你可以在环境设置中这样编辑PATH环境。

PATH=${PATH};c:projectsvcpkg  

auto-setup.cmake会将CMAKE_TOOLCHAIN_FILE设置为vcpkg工具链文件,并在这之前为VCPKG_TARGET_TRIPLET设置相应的值。

如果你不想让vcpkg自动设置,可以将CMake变量QT_CREATOR_SKIP_VCPKG_SETUP设置为TRUE。

自定义CMake程序包管理器

Qt Creator的auto-setup.cmake会先在源目录中查找一个名为QtCreatorPackageManager.cmake的文件后,如果找到了,那么它就被收录了。

对于只有CMake的包管理器cpp-pm/hunter,我们可以有一个QtCreatorPackageManager.cmake,它的样子是这样的。

set(HUNTER_PACKAGES fmt) include(FetchContent)  FetchContent_Declare(cpp-pm-setupGIT_REPOSITORY https://github.com/cpp-pm/gate)  FetchContent_MakeAvailable(cpp-pm-setup) set(QT_CREATOR_SKIP_PACKAGE_MANAGER_SETUP ON)  

QT_CREATOR_SKIP_PACKAGE_MANAGER_SETUP会告诉auto-setup.cmake提前退出,跳过conan和vcpkg自动检测。

下载Qt立刻体验吧!!

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月1日
下一篇 2021年3月1日

相关推荐

发表回复

登录后才能评论