彩票走势图

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

翻译|使用教程|编辑:鲍佳佳|2021-04-02 10:07:35.797|阅读 451 次

概述:你可能知道,在CMake代码中使用第三方软件是通过包来完成的,使用find_package命令。find_package的作用就像它的名字一样:找到一个包。如果包不存在,它会将_FOUND变量设置为FALSE,如果包是REQUIRED的,CMake配置会出错。这就是包管理器的作用。包管理器的设置可以在CMake代码中完成,也可以通过硬编码特定的代码来完成,或者在配置CMake项目之前记录下需要如何设置环境。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

开始前先介绍一下我们的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 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 //github.com/microsoft/vcpkg  > .\vcpkg\bootstrap-vcpkg.bat  

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

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

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

PATH=${PATH};c:\projects\vcpkg  

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-setup 
GIT_REPOSITORY //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立刻体验吧!!


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP