vscode實現第三方包的使用,cmake結合vcpkg(跨平臺)

要使用cmake和vcpkg組織一個完整的現代cpp項目,一般來說需要三個文件

vcpkg.json描述第三方依賴項

//vcpkg.json
{"dependencies": ["fmt"]
}//安裝,在vcpkg.json目錄執行
vcpkg install

CMakePresets.json定義項目的本質屬性(What):它聲明了項目由什么文件構成、目標是什么、以及它有什么依賴。這些是項目固有的、不隨用戶環境變化的屬性。

CMakeLists.txt定義項目的配置方式(How):它聲明了如何調用 CMake 來配置項目,為用戶和環境提供常用的預設參數。這些是用戶或平臺相關的、可變的配置選項。

//CMakeLists.txt
set(CMAKE_CXX_STANDARD 17)set(CMAKE_CXX_STANDARD_REQUIRED ON)cmake_minimum_required(VERSION 3.10)   //指定構建當前項目所需的最低 CMake 版本project(HelloWorld)                    find_package(fmt CONFIG REQUIRED)add_executable(HelloWorld helloworld.cpp)target_link_libraries(HelloWorld PRIVATE fmt::fmt)//CMakePresets.json{"version": 3,"configurePresets": [{"name": "vcpkg","generator": "MinGW Makefiles","binaryDir": "${sourceDir}/build","cacheVariables": {"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",//默認可能出錯,特別是在有多個編譯器的情況下,例如可能存在MSVC和MinGW "VCPKG_TARGET_TRIPLET": "x64-mingw-dynamic"}}]
}

兩個文件寫完后通過?CMake 項目配置命令,初始化項目的構建環境

//  build配置文件地址   ./源代碼地址   debug preset的name
cmake -B build -S ./ --preset debug

之后通過build即可完成項目構建!

在整個項目構建時,如果直接使用會報錯找不到第三方包,原因是直接編譯運行時未像 CMake 那樣自動引入第三方庫的路徑,需要額外配置.vscode

由于cmake具有跨平臺性,所以一般項目采用cmake+vcpkg是很好的方案!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/97985.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/97985.shtml
英文地址,請注明出處:http://en.pswp.cn/web/97985.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DevExpress中Word Processing Document API學習記錄

文章目錄1 文檔結構劃分2 文檔操作基礎2.1 Positions and Ranges2.2 Secitions2.3 Paragraphs2.4 Tables2.5 Lists2.6 Hyperlinks and Bookmarks2.7 Comments2.8 Headers and Footers2.9 Shapes and Pictures2.10 Watermarks2.11 Charts2.12 OLE Objects2.13 ActiveX Controls2…

Roo Code 的差異_快速編輯功能

什么是差異編輯? 簡單來說,差異編輯就像是一位細心的裝修師傅:他不會把整個房子拆掉重蓋,而是精準地只修補需要改動的部分。Roo Code 的這項功能默認開啟,它通過比對代碼差異(diff)來實施修改&a…

【Axure高保真原型】標簽樹分類查詢案例

今天和大家分享標簽樹分類查詢案例的原型模版,效果包括: 樹形分類——點擊左側樹形里的箭頭,可以展開或收起子級選項; 查詢表格——點擊標簽樹里的選項,如果是末級選項,可以篩選右側表格用戶標簽&#xf…

容器化部署項目05

一、工作原理 鏡像:容器的模板,包括容器運行時所需的數據 容器:運行中的進程,依賴鏡像運行,鏡像的具現化 鏡像你可以把它看成Python中的類,而容器可以看做是類的實例化對象。 一個類可以有多個對象&#xf…

微信小程序 工作日歷 周計劃日報 修改等提報和狀態展示功能,支持h5,Android ,ios,基于uniapp,適配vue2和vue3

Work-calendar 介紹 (底部附鏈接) 基于uni-calendar做的定制化開發,主要功能為工作日歷展示和提報組件 ? 1.支持周計劃日報狀態展示且可配置 ? 2.支持農歷展示配置,回到當日,月份切換 ? 3.日歷,周報…

openharmony 鴻蒙 下 利用藍牙API(a2dp模塊-高級音頻,ble模塊-低功耗藍牙等)完成對藍牙音響的控制(藍牙廣播)

1.首先是登錄頁面(利用webapi 和本地數據存儲完成登陸操作) 2.添加設備(利用ble.startBLEScan 和 ble.on("BLEDeviceFind", onReceiveEvent);完成藍牙掃描與顯示) 3.藍牙ble連接(利用ble.createGattClientDe…

17、邏輯回歸與分類評估 - 從連續到離散的智能判斷

學習目標:理解分類問題的本質和評估方法,掌握邏輯回歸的數學原理和概率解釋,學會二分類和多分類問題的處理方法,熟練使用分類評估指標,理解過擬合和正則化的基本概念。 > 從第16章到第17章:從預測數值到判斷類別 在第16章中,我們學習了線性回歸,解決的是預測連續數…

自動化腳本的核心引擎

自動化腳本作為現代軟件開發與運維的重要工具,其核心引擎承擔著解析指令、調度任務和執行邏輯的關鍵職能。這種引擎本質上是一個輕量級的運行時環境,通過預定義的規則集將人類可讀的腳本語言轉化為機器可執行的原子操作。在持續集成/持續交付&#xff08…

【Vue2 ?】Vue2 入門之旅 · 進階篇(九):Vue2 性能優化

在前幾篇文章中,我們學習了 Vuex 的內部機制以及 Vue Router 的工作原理。本篇將深入探討 Vue2 性能優化,幫助你掌握在開發中提升 Vue 應用性能的方法和技巧。 目錄 性能優化的意義響應式系統優化虛擬 DOM 與渲染優化組件懶加載與按需渲染事件與計算屬性…

【題解】B2600 【深基1.例2】簡單的分蘋果

題目描述 這里有 101010 個蘋果,小 A 拿走了 222 個,Uim 拿走了 444 個,八尾勇拿走剩下的所有的蘋果。我們想知道: 小A 和 Uim 兩個人一共拿走多少蘋果?八尾勇能拿走多少蘋果? 現在需要編寫一個程序&#x…

中小企業 4G 專網部署:性能與成本的最佳平衡

在數字化轉型的浪潮中,中小企業同樣需要安全、穩定和高效的通信網絡。然而,傳統專網的高成本和復雜部署往往成為阻礙。IPLOOK 提供的4G輕量級核心網與專網解決方案,正是幫助中小企業在性能與成本之間找到最佳平衡的關鍵。 中小企業的網絡挑…

LeetCode每日一題,20250914

元音拼寫檢查器 思路 精確匹配 用 HashSet 保存原始單詞&#xff0c;查詢時直接判斷是否存在。 大小寫忽略匹配 用 HashMap<String, String> 保存 小寫單詞 -> 第一次出現的原始單詞。用 putIfAbsent&#xff0c;確保只記錄第一次出現的單詞。 元音模糊匹配 把單詞…

i2s_record_play

這章主要講述i2s 1&#xff1a;環境及配件 esp32c3 esp32s3 idf5.4.1 INMP441 MAX98357A 都使用dma 2&#xff1a;eps32c3 測試 只有1個i2s 只能一邊錄 完 再播放 &#xff0c;內存太小&#xff0c;這里用 flash 存audio里 只說能 錄音 能播放 &#xff0c;效果不好&#xff0…

Spring Boot 3 + EasyExcel 文件導入導出實現

SpringBoot集成EasyExcel 3.x&#xff1a;高效實現Excel數據的優雅導入與導出 在現代企業應用中&#xff0c;Excel作為數據交換的重要工具&#xff0c;幾乎無處不在。如何高效且優雅地實現Excel數據的導入與導出&#xff0c;是每個開發者都需要面對的問題。EasyExcel是阿里巴巴…

Ruby編程實踐:20個實用練習

1、編寫一個程序,計算一年有多少小時。 以下是兩種實現方式的代碼: 方式一: puts 24*365方式二: puts 24*365 puts "(or #{24*366} on a leap year)"2、編寫一個程序,計算十年中有多少分鐘。 以下兩種實現方式: 簡單計算(未考慮閏年數量差異): ru…

邏輯回歸(二):從原理到實戰 - 訓練、評估與應用指南

引言&#xff1a; 上期我們講了什么是邏輯回歸&#xff0c;了解了它如何利用Sigmoid函數將線性回歸的輸出轉化為概率&#xff0c;并通過最大似然估計來尋找最佳參數。今天&#xff0c;我們將繼續這段旅程&#xff0c;學習如何訓練這個 模型、如何評估它的表現&#xff0c;以及如…

9.8C++作業

思維導圖#include <iostream> #include <vector> #include <fstream> using namespace std;class Stu {friend ofstream &operator<<(ofstream &ofs,const Stu &stu); private:string name;string id;int age;double score; public:Stu(){…

Linux內存管理章節十六:非均勻的內存訪問:深入Linux NUMA架構內存管理

引言 在傳統的SMP&#xff08;對稱多處理&#xff09;系統中&#xff0c;所有CPU核心通過一條共享總線訪問同一塊內存&#xff0c;所有內存訪問延遲是均勻的&#xff08;UMA&#xff09;。然而&#xff0c;隨著CPU核心數量的增加&#xff0c;共享總線成為了巨大的性能和 scalab…

【論文翻譯】Seg-Zero: Reasoning-Chain Guided Segmentation via Cognitive Reinforcement

0. 摘要Traditional methods for reasoning segmentation rely on supervised fine-tuning with categorical labels and simple descriptions, limiting its out-of-domain generalization and lacking explicit reasoning processes. To address these limitations, we propo…

Playwright MCP瀏覽器自動化教程

你是否曾厭倦在編程軟件和瀏覽器之間反復切換&#xff0c;只為了檢查AI生成的代碼能否正常運行&#xff1f;現在&#xff0c;有了Playwright MCP&#xff08;Model Context Protocol&#xff09;&#xff0c;你可以直接讓AI自己操作瀏覽器&#xff0c;查看自己寫的代碼運行效果…