• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

在Visual Studio、Clion、Msys2安装和使用vcpkg

武飞扬头像
无相孤君
帮助1

首先事情是在安装了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

就可以了。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggeeab
系列文章
更多 icon
同类精品
更多 icon
继续加载