翻譯|使用教程|編輯:鮑佳佳|2021-04-02 10:07:35.797|閱讀 523 次
概述:你可能知道,在CMake代碼中使用第三方軟件是通過包來完成的,使用find_package命令。find_package的作用就像它的名字一樣:找到一個包。如果包不存在,它會將
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
開始前先介紹一下我們的Qt商業(yè)控件:
你可能知道,在CMake代碼中使用第三方軟件是通過包來完成的,使用find_package命令。
find_package的作用就像它的名字一樣:找到一個包。如果包不存在,它會將<PackageName>_FOUND變量設(shè)置為FALSE,如果包是REQUIRED的,CMake配置會出錯。
這就是包管理器的作用。包管理器的設(shè)置可以在CMake代碼中完成,也可以通過硬編碼特定的代碼來完成,或者在配置CMake項目之前記錄下需要如何設(shè)置環(huán)境。
包管理器自動設(shè)置
CMake從3.15版本開始,允許通過CMAKE_PROJECT_INCLUDE_BEFORE注入自定義代碼,而不需要修改項目的CMake源代碼。
Qt Creator 4.15版將在初始的cmake參數(shù)中插入這一行。
-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
auto-setup.cmake 是 Qt Creator 附帶的一個 cmake 腳本,它將對以下包管理器進行自動設(shè)置:conan、vcpkg、自定義 CMake 包管理器,如 cpp-pm/hunter。
這個功能可以在Qt Creator的Options -> Build & Run -> CMake中關(guān)閉,然后取消選中 "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在構(gòu)建和運行應(yīng)用程序后的樣子:
Qt Creator 4.15獲得了指定“工具的文本編解碼器”的功能,需要將其設(shè)置為UTF-8或IBM866才能在輸出窗格中顯示Приветмир消息。
Conan
使用conan將fmt庫放入項目就像創(chuàng)建conanfile.txt一樣容易:
[requires] fmt/7.1.3 [generators] cmake_find_package
CMake目標cmake_find_package需要使用conan生成器fmt::fmt。
在您的系統(tǒng)上獲取conan就像運行一樣容易:
pip3 install conan
這假定你的系統(tǒng)上已經(jīng)安裝了python3。
Qt Creator的auto-setup.cmake負責為項目運行conan安裝,并盡可能地讓你的體驗不那么痛苦。這得益于conan-cmake的使用,conan-cmake也是Qt Creator的附帶工具。
如果你不想讓conan自動設(shè)置,你可以將CMake變量QT_CREATOR_SKIP_CONAN_SETUP設(shè)置為TRUE。
vcpkg
使用vcpkg將fmt庫放入項目就像創(chuàng)建此vcpkg.json文件一樣容易:
{ "name": "hello-world", "version-string": "0.0.1", "dependencies": [ "fmt" ] }設(shè)置以便在Qt Creator中使用就像運行一樣容易:
> git clone //github.com/microsoft/vcpkg > .\vcpkg\bootstrap-vcpkg.bat
以上命令將為vcpkg設(shè)置目錄結(jié)構(gòu),并下載一個預制的vcpkg可執(zhí)行文件。
Qt Creator的auto-setup.cmake需要在PATH環(huán)境變量中加入vcpkg.exe。
在Qt Creator 4.15中,你可以在環(huán)境設(shè)置中這樣編輯PATH環(huán)境。
PATH=${PATH};c:\projects\vcpkg
auto-setup.cmake會將CMAKE_TOOLCHAIN_FILE設(shè)置為vcpkg工具鏈文件,并在這之前為VCPKG_TARGET_TRIPLET設(shè)置相應(yīng)的值。
如果你不想讓vcpkg自動設(shè)置,可以將CMake變量QT_CREATOR_SKIP_VCPKG_SETUP設(shè)置為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立刻體驗吧!!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: