注æ
è®¿é®æ¤é¡µé¢éè¦ææã å¯ä»¥å°è¯ç»å½ææ´æ¹ç®å½ã
è®¿é®æ¤é¡µé¢éè¦ææã å¯ä»¥å°è¯æ´æ¹ç®å½ã
Vcpkg æ¯ç± Microsoft å C++ 社åºç»´æ¤çå è´¹å¼æº C/C++ å 管çå¨ï¼å¯å¨ WindowsãmacOS å Linux ä¸è¿è¡ã 宿¯æ ¸å¿ç C++ å·¥å ·ï¼ä½¿ç¨ C++ å CMake èæ¬ç¼åã 宿¨å¨è§£å³ç®¡ç C/C++ åºçç¬ç¹é¾é¢ã
为ä»ä¹ä½¿ç¨ vcpkgï¼
- å¨ç¹é注åè¡¨ä¸æè¶ è¿ 2300 ä¸ªå¼æºåºå¯ä¾éæ©ï¼è¿äºåºä¼å®æçæï¼ç¨äºéªè¯ ABI å ¼å®¹æ§
- 使ç¨èªå·±çèªå®ä¹åºå å建èªå®ä¹åºæ³¨å表
- éç¨äº WindowsãmacOS å Linux çä¸è´ç跨平å°ä½éª
- 使ç¨ä»»ä½çæå项ç®ç³»ç»è½»æ¾å°åºæ·»å å°é¡¹ç®
- 仿ºçæä¾èµé¡¹æä¸è½½é¢çæç ABI éªè¯äºè¿å¶æä»¶ï¼é»è®¤æä¾ 70 å¤ä¸ªé ç½®ï¼å¹¶å¯é对ç¹å®è¦æ±è¿è¡æ éèªå®ä¹
- éè¿ç¬ç¹ççæ¬æ§å¶è®¾è®¡ï¼é²æ¢ä¾èµé¡¹ä¹é´åºç°çæ¬å²çªåè±å½¢ä¾èµé®é¢
- å¯¹äº MSBuild å CMake ç¨æ·ï¼èªå¨ä¸çæç¯å¢éæï¼æé æ ç¼è·åä¾èµé¡¹çä½éª
- åå°å¦çã弿ºå¼å人åãä¸ä½ç±å¥½è åä¸ä¸äººå£«çä¿¡ä»»ï¼å æ¬ä¸äºå¤§åä¼ä¸
vcpkg åè½
端å£åä¸å ç»
vcpkg ç«¯å£æ¯ä¸ç§çæ¬æ§å¶çææ¹æ¡ï¼å¯çæä¸ä¸ªå ã æå¸¸è§çå ç±»åæ¯å 嫿 å¤´ãæºä»£ç åäºè¿å¶æä»¶ç C/C++ åºã
ä¸å ç»ä»¥å个æ¹ä¾¿çåç§°æè·ç®æ çæç¯å¢ï¼cpuãosãç¼è¯å¨ãè¿è¡æ¶çï¼ã vcpkg é»è®¤æä¾è¶ è¿ 70 个ä¸å ç»ï¼ä½ä½ ä¹å¯ä»¥å®ä¹èªå·±çä¸å ç»ã
为äºå¨ç³»ç»ä¸å®è£ å ï¼vcpkg ä¼è¿è¡ç«¯å£çé æ¹æä»¶ï¼CMake èæ¬ï¼ã è¯¥èæ¬å¯è½å å«ä¸è½½æºä»£ç æå¨ç³»ç»ä¸è¿è¡çæçæ¥éª¤ã å¨çææé´ï¼vcpkg 使ç¨ä¸å ç»ä¸çä¿¡æ¯æ¥ç¡®ä¿çæçå 䏿éçé ç½®å¹é ã
äºè¿å¶ç¼å
尽管 vcpkg æ ¹æ®éè¦ä»æºçæåºï¼ä½å¯ä»¥å¨äºè¿å¶ç¼åä¸å¤ä»½çæçå ã è¿æ ·ï¼ä¾¿å¯ä»¥è¿è¡å ¶ä»å¼å人åè®¡ç®æºææç»éæä»¥å¼ç¨è¿äºé¢çæçå ï¼èæ éæ¯æ¬¡è¿è¡æ°ççæã vcpkg 伿£æ¥ç¼åæ¯å¦å·²å 嫿æçç°æå 以åç¸åºçäºè¿å¶æä»¶ï¼ä»¥ç¡®å®æ¯å¦éè¦éæ°çæã
æ¸ å
å¯ä»¥å¨æ¸ åæä»¶ä¸å£°æç´æ¥ä¾èµé¡¹å¹¶æ·»å å¯éåè½æçæ¬çº¦æã æ¸ åæä»¶å¯ä»¥ç¾å ¥å°æºæ§å¶ç³»ç»ä¸å¹¶ä¸å¢éå ±äº«ã
çæ¬æ§å¶
vcpkg å ·æå¤çå çæ¬çå¯ä¸æ¹æ³ã æ¸ åæä»¶å¯ä»¥å¼ç¨é»è®¤è®¾ç½®çå个åºçº¿çæ¬ã 该åºçº¿æä¾è½»èæä¸¾ä¸æ å²çªçä¾èµé¡¹ç®¡çï¼å ·æå®å ¨å¯éç°æ§ã æ¤å¤ï¼ä½ ä»ç¶å¯ä»¥éè¿åºå®å个å çæ¬æ¥è·å¾æ´é«çº§çæ§å¶ã
注å表
注åè¡¨æ¯ vcpkg ç¨æ·å¯ä»¥å®è£ ç端å£åå¯ç¨çæ¬çéåã vcpkg é»è®¤æä¾å¼æ¾æºä»£ç åºçç¹é注å表ã è¿å¯ä»¥ä¸ºèªå®ä¹ã修补æç§äººåºå建èªå·±ç注å表ã
èµäº§ç¼å
èµäº§ç¼åå¯ä½¿ vcpkg å¨å®ä½é离å离线ç¯å¢ä¸å·¥ä½ï¼å³ä½¿è¿ç¨ä¸»æºåºç°æ éæè¢«çç¨ï¼ä¹å¯ç¡®ä¿ä¸å¡è¿ç»æ§ã å®ä½¿ç¨ä¸è½½éåä¸ä¼ åè¿åèµäº§ï¼ä¾å¦æºä»£ç åçæå·¥å ·ã
vcpkg ä¸å ¶ä»å 管çå¨çæ¯è¾
vcpkg ä¸ NuGet çæ¯è¾
NuGet æ¯ .NET å 管çå¨ï¼é常ç¨äº C/C++ å¼åï¼å°¤å ¶éç¨äºåæ¶å å« .NET 项ç®ç MSBuild è§£å³æ¹æ¡ã ä¸è¬æ åµä¸ï¼Microsoft C++ å¢éä¸å»ºè®®ä½¿ç¨ NuGet è¿è¡ C/C++ å¼åï¼å 为 NuGet åå¨ä»¥ä¸éå¶ï¼
- ç¼è¯é£æ ¼ã ç±äº NuGet æ æ³å³æ¶ä»æºçæå ï¼å æ¤å¿ é¡»æä¾é¢çæçäºè¿å¶æä»¶ï¼ä»¥ç¬¦åææç¨æ·çææå¯è½çåºç¨ç¨åºäºè¿å¶æ¥å£ (ABI) éå¶ã ç¨æ·è´è´£èªè¡çæå ã ç±äºç¼ºå°ç¸å ³çå æ°æ®ï¼ä¹å¾é¾åºåäºè¿å¶æä»¶ã è¿ä¼å¯¼è´ç¨æ·å°ä½ç³»ç»æãæä½ç³»ç»ä»¥åç¼è¯å¨ä¿¡æ¯æ¾ç½®å¨å åç§°ä¸ã è¿æ¯ä¸å¯åçï¼å 为å¨å è·åæé´æ æ³å¼ºå¶å®æ½å¯¹ä½ç³»ç»æãOS åç¼è¯å¨ä¿¡æ¯ç约æã
- äºè¿å¶æä»¶ä¸æºä»£ç ã NuGet ä»ä¸å¼å§å°±æ¨å¨æä¾ç¸å¯¹è¾å°çé¢çæäºè¿å¶æä»¶ã å¼å人åéè¦ææè®¿é®æºä»£ç ï¼ä»¥ç¡®ä¿ ABI å ¼å®¹æ§ãæ§è½ã宿´æ§åå¯è°è¯æ§ã
- 䏿¯æ NuGet PackageReferenceã
.vcxprojæä»¶ä¸æ¯æ NuGet PackageReferenceï¼å¹¶ä¸ç±äº C++ å .NET MSBuild 项ç®ä¹é´å卿æ¯åä½ç³»ç»æå·®å¼ï¼å æ¤æ²¡ææ·»å å®ç计åã è¿æå³ç NuGet C++ ç¨æ·ä¸ä¼åçäºä½¿ç¨å ¨å±ç¼ååå¨å ·ææ¡ä»¶é»è¾è®¿é®æéçç®å MSBuild æ¯è¯ä¸å¼ç¨ä¾èµé¡¹çåè½ã - å¯ä¼ éç ABI è·è¸ªã vcpkg éæ°æå»ºåç¹å®å æ´æ¹å½±åç弿ºä¾èµé¡¹ã ä¾å¦ï¼å¦æä¸º Boost åå¸äºæ°çæ´æ°ï¼vcpkg ä¼éæ°çæ Boost çææä¾èµé¡¹ä»¥åä¾èµäº Boost çåºï¼ä»èç¡®ä¿å®ä»¬ä»ç¶ææã å¨è§£å³æ¤ç±»çææ¶å²çªä¹åï¼ä¸ä¼åå¹¶ç¨äºæ´æ° vcpkg åå¨åºä¸çåºçæå请æ±ã
vcpkg ä¸ç³»ç»å 管çå¨çæ¯è¾
éç¨äº LinuxãmacOS å Windows çåç§ç³»ç»å 管çå¨å¯ç¨äºè·åå管ç C/C++ åºã è¿äºå 管çå¨é常é常éåç¨äºç®¡çåºç¨ç¨åºã 使¯ï¼ç±äºå ¶æ¯æçä¸è¬æ§è´¨ï¼å®ä»¬éå¸¸æ æ³æä¾ä»¤ C/C++ å¼å人ååççåè½ã è½ç¶ä½ çæ åµå¯è½ä¼ææä¸åï¼å¹¶ä¸æäºç³»ç»å 管çå¨ç¡®å®æä¾å ¶ä¸ä¸äºåè½ï¼ä½æ²¡æä¸ä¸ªç³»ç»å 管ç卿¥æä»¥ä¸å ¨é¨åè½ï¼
- å¯åååçå¼å人åèµäº§ï¼vcpkg å¯ä»¥è·åå¯åååçå¼å人åèµäº§ï¼ä»¥å¸®å©è¿è¡è°è¯ã
- é¢çæå ä¸ä»æºçæï¼vcpkg å¯ä»¥æ ¹æ®èªå®ä¹è¦æ±ä»æºçæå ã æ éå¤çé¢çæçé¢ç¼è¯å ï¼å³å¯è®©å®ä»¬åæ¥ä½ç¨ã
- ç®å½èå´ççæ¬æ§å¶ï¼vcpkg å è®¸ä½ ä¾èµäºä¸ç»å·²è¿è¡çæ¬æ§å¶çå ¼å®¹å ï¼èæ é对å个å çæ¬è¿è¡å¾®è§ç®¡çã æ¨ä»ç¶å¯ä»¥æ ¹æ®éè¦æ§è¡æ¤æä½ï¼ä½ä½é»è®¤ä½éªæ¨å¨æäºä¸æã
- ä¸ä¸ªç³»ç»ä¸åä¸ä¸ªåºçå¤ä¸ªå¯æ¬ï¼å¯ä»¥ä½¿ç¨ vcpkg å¨åä¸ç³»ç»ä¸å®è£ åä¸ä¸ªä¾èµé¡¹çå¤ä¸ªå¯æ¬ï¼èç³»ç»å 管çå¨å¯ä»¥å°ä¸ä¸ªçæ¬å®è£ å°å个系ç»èå´çä½ç½®ã 彿å¤ä¸ªé¡¹ç®ä¾èµäºåºçä¸åçæ¬æ¶ï¼æ åµå°±ä¼åå¾å¤æã
- ç®å½å¤§å°ï¼ç±äº vcpkg ä¸ç¨äº C/C++ï¼å æ¤ç¸è¾äºç³»ç»å 管çå¨ï¼å®å ·æé常大ç C/C++ åºéåï¼å¹¶ä¸å¾ä»¥ä¸»å¨ç»´æ¤ã ä¸è¬æ åµä¸ï¼ä½ æ´æå¯è½åç°éç¨äºæ¤ç±» C++ å¼åçææ°çåºã
- è·¨å¹³å°æ¯æï¼ç³»ç»å 管ç卿ä¾éå®å°è¯¥ç¹å®ç³»ç»çå ã 妿éè¦é¢åå¤ç§æä½ç³»ç»ï¼åéè¦ä¸ºç¬¬äºä¸ªç³»ç»å¯»æ¾ä¸åçå 管çå¨ã ç¸æ¯ä¹ä¸ï¼vcpkg æ¯è·¨å¹³å°çå 管çå¨ã å æ¤ï¼åªéç¸åºå°è°æ´ç®æ çæå³å¯ã
å¨æäºæ åµä¸ä½¿ç¨ç³»ç»å 管çå¨ç»å¯¹æ´åéã
- ç³»ç»å 管çå¨å¾å¾è½ææå°æä¾å¹¶ç»´æ¤ç¹å®äºè¯¥ç³»ç»çåº
- å¦æä½¿ç¨ç项ç®å ·æç®åççæé ç½®ï¼åé¢çæçå åºå¨è¯¥ç³»ç»ä¸å¼ç®±å³ç¨ã
- 妿䏿ç®è¿è¡ä»»ä½è·¨å¹³å°å¼åï¼åä¸ä¼éå°ä¸ç³»ç»å 管çå¨çæä½ç³»ç»å ¼å®¹æ§é®é¢ã
vcpkg æ¨å¨ä¸ç³»ç»å 管çå¨å¹¶è¡å·¥ä½ï¼å æ¤å¯ä»¥éæä½¿ç¨æéåäºæ¯ä¸ªä¾èµé¡¹çå·¥å ·ã
vcpkg å ¥é¨
è¥è¦è¯ç¨ vcpkgï¼è¯·æ¥é æä»¬çå ¥é¨æç¨ï¼
- éè¿ CMake å®è£ å使ç¨å
- å¨ Visual Studio ä¸ä½¿ç¨ CMake å®è£ å管çå
- å¨ Visual Studio ä¸ä½¿ç¨ MSBuild å®è£ å管çå
- å¨ Visual Studio Code ä¸ä½¿ç¨ CMake å®è£ å管çå
- ä½¿ç¨ vcpkg æå åº
- å°ç«¯å£æ·»å å° vcpkg ç¹é注å表
妿çæç³»ç»ä¸æ¯ CMake æ MSBuildï¼vcpkg 乿¯æä¸é¦éç¯å¢è¿è¡æå¨éæã