首先事情是在安装了Msys2之后,想在Clion中使用安装在Msys2中的vcpkg。但是折腾了很久还是无法解决。于是就折腾出了这篇文章,和下一篇如何在Clion使用vcpkg的文章。
不过,由于我电脑上已近配置好了vcpkg以及环境变量,要是重新删除再搞特别麻烦,于是教程我使用msys2来掩饰。你们只需要将msys2当成cmd或终端既可。
第一步,使用git命令克隆下vcpkg的源码。
git clone https://github.com/microsoft/vcpkg
输入命令之后,等待下载成功。
第二步,下载vcpkg.exe。
使用cd命令,进入到vcpkg目录下。
cd vcpkg/
我们可以使用ls命令查看vcpkg目录下有什么文件。
ls
可以看到bootstrap-vcpkg有两个版本,一个windows脚本,一个shell脚本。
因为我们是windows安装vcpkg,虽然我现在是使用msys2但是也是使用bootstrap-vcpkg.bat。让我们输入下面命令会从github的release下载编译好的vcpkg.exe。
注意:msys2是模拟Linux环境,所以应该注意目录。
Linux:
./bootstrap-vcpkg.bat
Windows:
.\bootstrap-vcpkg.bat
我们使用第二个
运行之后我们,可以看到vcpkg.exe已经下载成功了
第三步,配置vcpkg环境变量(可选)
为什么是可选,因为在你install第三方库的时候,vcpkg会自动下载cmake,所以配不配意义都不大。但是配一下不是更有意思吗?
接下来,我们可以配置环境变量,在开始菜单中搜索
这个目录是你vcpkg的目录,虽然我是使用msys2演示安装,但是配置环境变量是使用我已经安装好的。偷懒,懒得删除重新搞。
配置好环境变量之后,重启你的终端,让环境变量生效。
第四步,配置Cmake(可选)
Cmake官网https://cmake.org/download/
找到合适自己系统架构的版本,我们直接安装便携版 cmake-3.26.0-rc1-windows-x86_64.msi【点击下载】
下载之后,直接打开运行,需要注意的只是这个页面可选添加环境变量和添加桌面图标。
选好,直接Next到结束,我们可以进入系统环境变量,中查看
环境变量已经配置成功。
第五步,使用vcpkg
输入命令
vcpkg integrate install
这句话需要复制出来。
“-DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake”
接下来,我们安装一个第三方库,xlnt。
vcpkg.exe install xlnt:x64-windows
我们也可以设置 VCPKG_DEFAULT_TRIPLET来指定默认的架构,这样子我们就不需要加:x64-windows了。
Windows:
set VCPKG_DEFAULT_TRIPLET=x64-windows
官方文档:
如果该环境变量未定义,则运行任何 vcpkg 命令时的默认三元组是
%VCPKG_DEFAULT_TRIPLET%
或特定于平台的选择。
- Windows:
x86-windows
- Linux:
x64-linux
- MacOs:
x64-osx
安装好库,我们使用
vcpkg list
命令查看
接下来我们打开Visual Studio
SLN(解决方案)项目使用
选择空项目,然后都是一些简单的,直接下一步既可。
创建好项目之后,先回到终端输入命令配置
vcpkg integrate project
与VisualStudio集成。
进入项目文件,之后找到工具——>NuGet包管理器——>管理解决方案的NuGet程序包
因为我已经安装过了,只能大概教你们怎么安装,就是点击右上角绿色加号,添加
D:\vcpkg\scripts\buildsystems
这个目录进去,
添加成功后,将右上角的程序包源改成vcpkg,然后将其添加到你当前的项目。
将下面这段代码粘贴进去
#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;
}
可以看到我们引用头文件,并没有报错,也可以直接编译。
Visual Studio中使用
Cmake项目
新建项目,选择cmake项目,我就多放几张图吧,打字太累了。
在搜索栏中搜索cmake,找到cmake设置。其实也就是从项目目录中,找到打开CMakePresets.json
添加下面这段json到文件中。
"CMAKE_TOOLCHAIN_FILE":{"type":"FILEPATH","value":"D:/vcpkg/scripts/buildsystems/vcpkg.cmake"},"DVCPKG_TARGET_TRIPLET":"x64-windows"},
选择删除并重新生成缓存
接下来进入到
添加
find_package(Xlnt CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE xlnt::xlnt)
然后就是我们的测试了
#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;
}
我们可以看到运行成功,这个时候就有人好奇,怎么看出来运行成功没有,
我们进入到输出目录,就可以看到生成文件了。
Clion中使用
首先下载Clion测试版,当然不使用也是可以的只是更麻烦
https://blog.jetbrains.com/clion/2023/01/support-for-vcpkg-in-clion/
链接里面有测试版Clion使用vcpkg包管理器的使用教程,
而现在我教的是手动配置运行环境。
使用Clion先创建一个项目
接下来,去设置中,找到cmake选项
将之前控制台输出的
-DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake
直接复制粘贴进去
当然,你还可以添加一句,不加默认x86-windows,你就可能报错找不到库的cmake文件。
-DVCPKG_TARGET_TRIPLET=x64-windows
指定使用x64-windows
然后进入CMakeLists.txt文件添加以下两句话。
find_package(Xlnt CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE xlnt::xlnt)
推荐使用工具中的,cmake选项,重置缓存并重新加载项目。
毕竟之前的cmake会有一点点缓存。
可以看到,并没有报错,现在是时候拿出我们的测试代码了。
#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;
}
哎呀,遇到问题了。
将工具链,切换成Visual Studio
又遇到问题了,只是我们安装的cmake版本太高了,还配置了环境变量,导致新建项目直接就设置为了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)
降低编译所需要的最小版本
又是一个小问题,不慌,问题不大。也就是项目运行不了,而已。
"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".
[已完成]
实际上这个问题,我也不知道如何解决,但是我知道它怎么发生的。
因为我设置了,
-DVCPKG_TARGET_TRIPLET=x64-windows
,指定了只能使用x64-windows
我们可以看到又报错,不错很爽
"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".
[已完成]
不慌,找不到库罢了,但是我们不是安装了x64-windows吗?
为什么找不到,虽然是默认x86-windows,但是我使用DVCPKG_TARGET_TRIPLET指定了版本啊~
Clion测试版中,找到这个省略号,点击vcpkg,既可打开clion测试版的vcpkg包管理器。
搜索xlnt之后
选择x86-windows架构,然后点击安装。
等待下载
让我们清除Cmake的缓存,之后等待cmake的构建。既可,看见出现了可以运行。
点击运行之后,成功生成文件了,接下来我们知己
配置了环境使用命令行的也就是一句话
vcpkg install xlnt:x86-windows
就可以了。
版权归原作者 无相孤君 所有, 如有侵权,请联系我们删除。