首先事情是在安裝了Msys2之后,想在Clion中使用安裝在Msys2中的vcpkg。但是折騰了很久還是無(wú)法解決。于是就折騰出了這篇文章,和下一篇如何在Clion使用vcpkg的文章。
不過(guò),由于我電腦上已近配置好了vcpkg以及環(huán)境變量,要是重新刪除再搞特別麻煩,于是教程我使用msys2來(lái)掩飾。你們只需要將msys2當(dāng)成cmd或終端既可。
第一步,使用git命令克隆下vcpkg的源碼。
git clone https://github.com/microsoft/vcpkg
輸入命令之后,等待下載成功。
第二步,下載vcpkg.exe。
使用cd命令,進(jìn)入到vcpkg目錄下。
cd vcpkg/
我們可以使用ls命令查看vcpkg目錄下有什么文件。
ls
可以看到bootstrap-vcpkg有兩個(gè)版本,一個(gè)windows腳本,一個(gè)shell腳本。
因?yàn)槲覀兪莣indows安裝vcpkg,雖然我現(xiàn)在是使用msys2但是也是使用bootstrap-vcpkg.bat。讓我們輸入下面命令會(huì)從github的release下載編譯好的vcpkg.exe。
注意:msys2是模擬Linux環(huán)境,所以應(yīng)該注意目錄。
Linux:
./bootstrap-vcpkg.bat
Windows:
.\bootstrap-vcpkg.bat
我們使用第二個(gè)
運(yùn)行之后我們,可以看到vcpkg.exe已經(jīng)下載成功了
第三步,配置vcpkg環(huán)境變量(可選)
為什么是可選,因?yàn)樵谀鉯nstall第三方庫(kù)的時(shí)候,vcpkg會(huì)自動(dòng)下載cmake,所以配不配意義都不大。但是配一下不是更有意思嗎?
接下來(lái),我們可以配置環(huán)境變量,在開(kāi)始菜單中搜索
這個(gè)目錄是你vcpkg的目錄,雖然我是使用msys2演示安裝,但是配置環(huán)境變量是使用我已經(jīng)安裝好的。偷懶,懶得刪除重新搞。
配置好環(huán)境變量之后,重啟你的終端,讓環(huán)境變量生效。
第四步,配置Cmake(可選)
Cmake官網(wǎng)https://cmake.org/download/
找到合適自己系統(tǒng)架構(gòu)的版本,我們直接安裝便攜版 cmake-3.26.0-rc1-windows-x86_64.msi【點(diǎn)擊下載】
下載之后,直接打開(kāi)運(yùn)行,需要注意的只是這個(gè)頁(yè)面可選添加環(huán)境變量和添加桌面圖標(biāo)。
選好,直接Next到結(jié)束,我們可以進(jìn)入系統(tǒng)環(huán)境變量,中查看
環(huán)境變量已經(jīng)配置成功。
第五步,使用vcpkg
輸入命令
vcpkg integrate install
這句話需要復(fù)制出來(lái)。
“-DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake”
接下來(lái),我們安裝一個(gè)第三方庫(kù),xlnt。
vcpkg.exe install xlnt:x64-windows
我們也可以設(shè)置 VCPKG_DEFAULT_TRIPLET來(lái)指定默認(rèn)的架構(gòu),這樣子我們就不需要加:x64-windows了。
Windows:
set VCPKG_DEFAULT_TRIPLET=x64-windows
官方文檔:
如果該環(huán)境變量未定義,則運(yùn)行任何 vcpkg 命令時(shí)的默認(rèn)三元組是
%VCPKG_DEFAULT_TRIPLET%
或特定于平臺(tái)的選擇。
- Windows:
x86-windows
- Linux:
x64-linux
- MacOs:
x64-osx
安裝好庫(kù),我們使用vcpkg list
命令查看
接下來(lái)我們打開(kāi)Visual Studio
SLN(解決方案)項(xiàng)目使用
選擇空項(xiàng)目,然后都是一些簡(jiǎn)單的,直接下一步既可。
創(chuàng)建好項(xiàng)目之后,先回到終端輸入命令配置
vcpkg integrate project
與VisualStudio集成。
進(jìn)入項(xiàng)目文件,之后找到工具——>NuGet包管理器——>管理解決方案的NuGet程序包
因?yàn)槲乙呀?jīng)安裝過(guò)了,只能大概教你們?cè)趺窗惭b,就是點(diǎn)擊右上角綠色加號(hào),添加
D:\vcpkg\scripts\buildsystems
這個(gè)目錄進(jìn)去,
添加成功后,將右上角的程序包源改成vcpkg,然后將其添加到你當(dāng)前的項(xiàng)目。
將下面這段代碼粘貼進(jìn)去
#include <xlnt/xlnt.hpp>
using namespace xlnt;
int main()
{
workbook wb;
worksheet ws = wb.active_sheet();
ws.cell("A1").value(5);
ws.cell("B2").value("string data");
ws.cell("C3").formula("=RAND()");
ws.merge_cells("C3:C4");
ws.freeze_panes("B2");
wb.save("example.xlsx");
return 0;
}
可以看到我們引用頭文件,并沒(méi)有報(bào)錯(cuò),也可以直接編譯。
Visual Studio中使用
Cmake項(xiàng)目
新建項(xiàng)目,選擇cmake項(xiàng)目,我就多放幾張圖吧,打字太累了。
在搜索欄中搜索cmake,找到cmake設(shè)置。其實(shí)也就是從項(xiàng)目目錄中,找到打開(kāi)CMakePresets.json
添加下面這段json到文件中。
"CMAKE_TOOLCHAIN_FILE": {
"type": "FILEPATH",
"value": "D:/vcpkg/scripts/buildsystems/vcpkg.cmake"
},
"DVCPKG_TARGET_TRIPLET": "x64-windows"},
選擇刪除并重新生成緩存
接下來(lái)進(jìn)入到
添加
find_package(Xlnt CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE xlnt::xlnt)
然后就是我們的測(cè)試了
#include <xlnt/xlnt.hpp>
using namespace xlnt;
int main()
{
workbook wb;
worksheet ws = wb.active_sheet();
ws.cell("A1").value(5);
ws.cell("B2").value("string data");
ws.cell("C3").formula("=RAND()");
ws.merge_cells("C3:C4");
ws.freeze_panes("B2");
wb.save("example.xlsx");
return 0;
}
我們可以看到運(yùn)行成功,這個(gè)時(shí)候就有人好奇,怎么看出來(lái)運(yùn)行成功沒(méi)有,
我們進(jìn)入到輸出目錄,就可以看到生成文件了。
Clion中使用
首先下載Clion測(cè)試版,當(dāng)然不使用也是可以的只是更麻煩
https://blog.jetbrains.com/clion/2023/01/support-for-vcpkg-in-clion/
鏈接里面有測(cè)試版Clion使用vcpkg包管理器的使用教程,
而現(xiàn)在我教的是手動(dòng)配置運(yùn)行環(huán)境。
使用Clion先創(chuàng)建一個(gè)項(xiàng)目
接下來(lái),去設(shè)置中,找到cmake選項(xiàng)
將之前控制臺(tái)輸出的
-DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake
直接復(fù)制粘貼進(jìn)去
當(dāng)然,你還可以添加一句,不加默認(rèn)x86-windows,你就可能報(bào)錯(cuò)找不到庫(kù)的cmake文件。
-DVCPKG_TARGET_TRIPLET=x64-windows
指定使用x64-windows
然后進(jìn)入CMakeLists.txt文件添加以下兩句話。
find_package(Xlnt CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE xlnt::xlnt)
推薦使用工具中的,cmake選項(xiàng),重置緩存并重新加載項(xiàng)目。
畢竟之前的cmake會(huì)有一點(diǎn)點(diǎn)緩存。
可以看到,并沒(méi)有報(bào)錯(cuò),現(xiàn)在是時(shí)候拿出我們的測(cè)試代碼了。
#include <xlnt/xlnt.hpp>
using namespace xlnt;
int main()
{
workbook wb;
worksheet ws = wb.active_sheet();
ws.cell("A1").value(5);
ws.cell("B2").value("string data");
ws.cell("C3").formula("=RAND()");
ws.merge_cells("C3:C4");
ws.freeze_panes("B2");
wb.save("example.xlsx");
return 0;
}
哎呀,遇到問(wèn)題了。
將工具鏈,切換成Visual Studio
又遇到問(wèn)題了,只是我們安裝的cmake版本太高了,還配置了環(huán)境變量,導(dǎo)致新建項(xiàng)目直接就設(shè)置為了3.25版本。clion只支持3.24.x,我們安裝的是3.26版本,
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
CMake 3.25 or higher is required. You are running version 3.24.2
修改為cmake_minimum_required(VERSION 3.14)
降低編譯所需要的最小版本
又是一個(gè)小問(wèn)題,不慌,問(wèn)題不大。也就是項(xiàng)目運(yùn)行不了,而已。
"D:\Program Files\JetBrains\CLion 231.6471.1\bin\cmake\win\x64\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_MAKE_PROGRAM=D:/Program Files/JetBrains/CLion 231.6471.1/bin/ninja/win/x64/ninja.exe" -DCMAKE_PREFIX_PATH=D:\msys64\mingw64 -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -G Ninja -S C:\Users\MI\CodeSpace\ClionCodeProjects\vcpkgdemo -B C:\Users\MI\CodeSpace\ClionCodeProjects\vcpkgdemo\cmake-build-debug-visual-studio
-- The C compiler identification is MSVC 19.34.31937.0
-- The CXX compiler identification is MSVC 19.34.31937.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.34.31933/bin/Hostx86/x86/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.34.31933/bin/Hostx86/x86/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at D:/vcpkg/scripts/buildsystems/vcpkg.cmake:843 (_find_package):
Could not find a configuration file for package "Xlnt" that is compatible
with requested version "".
The following configuration files were considered but not accepted:
D:/vcpkg/installed/x64-windows/share/xlnt/XlntConfig.cmake, version: 1.5.0 (64bit)
Call Stack (most recent call first):
CMakeLists.txt:5 (find_package)
-- Configuring incomplete, errors occurred!
See also "C:/Users/MI/CodeSpace/ClionCodeProjects/vcpkgdemo/cmake-build-debug-visual-studio/CMakeFiles/CMakeOutput.log".
[已完成]
實(shí)際上這個(gè)問(wèn)題,我也不知道如何解決,但是我知道它怎么發(fā)生的。
因?yàn)槲以O(shè)置了,-DVCPKG_TARGET_TRIPLET=x64-windows
,指定了只能使用x64-windows
我們可以看到又報(bào)錯(cuò),不錯(cuò)很爽
"D:\Program Files\JetBrains\CLion 231.6471.1\bin\cmake\win\x64\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_MAKE_PROGRAM=D:/Program Files/JetBrains/CLion 231.6471.1/bin/ninja/win/x64/ninja.exe" -DCMAKE_PREFIX_PATH=D:\msys64\mingw64 -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake -G Ninja -S C:\Users\MI\CodeSpace\ClionCodeProjects\vcpkgdemo -B C:\Users\MI\CodeSpace\ClionCodeProjects\vcpkgdemo\cmake-build-debug-visual-studio
-- The C compiler identification is MSVC 19.34.31937.0
-- The CXX compiler identification is MSVC 19.34.31937.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.34.31933/bin/Hostx86/x86/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.34.31933/bin/Hostx86/x86/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at D:/vcpkg/scripts/buildsystems/vcpkg.cmake:843 (_find_package):
Could not find a package configuration file provided by "Xlnt" with any of
the following names:
XlntConfig.cmake
xlnt-config.cmake
Add the installation prefix of "Xlnt" to CMAKE_PREFIX_PATH or set
"Xlnt_DIR" to a directory containing one of the above files. If "Xlnt"
provides a separate development package or SDK, be sure it has been
installed.
Call Stack (most recent call first):
CMakeLists.txt:5 (find_package)
-- Configuring incomplete, errors occurred!
See also "C:/Users/MI/CodeSpace/ClionCodeProjects/vcpkgdemo/cmake-build-debug-visual-studio/CMakeFiles/CMakeOutput.log".
[已完成]
不慌,找不到庫(kù)罷了,但是我們不是安裝了x64-windows嗎?
為什么找不到,雖然是默認(rèn)x86-windows,但是我使用DVCPKG_TARGET_TRIPLET指定了版本啊~
Clion測(cè)試版中,找到這個(gè)省略號(hào),點(diǎn)擊vcpkg,既可打開(kāi)clion測(cè)試版的vcpkg包管理器。
搜索xlnt之后
選擇x86-windows架構(gòu),然后點(diǎn)擊安裝。
等待下載
讓我們清除Cmake的緩存,之后等待cmake的構(gòu)建。既可,看見(jiàn)出現(xiàn)了可以運(yùn)行。
點(diǎn)擊運(yùn)行之后,成功生成文件了,接下來(lái)我們知己
配置了環(huán)境使用命令行的也就是一句話文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-425323.html
vcpkg install xlnt:x86-windows
就可以了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-425323.html
到了這里,關(guān)于如何在Visual Studio、Clion、Msys2中安裝和使用vcpkg的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!