Clion下vcpkg的使用详解

环境

ubuntu 20+
clion 2021.1

背景

在Linux下,每次新创建1个项目,可能会使用一些第三方库,比如:

  • toml解析
  • spdlog日志

难道每次都要我去重新下载源码,然后编译,在配置CMake?太麻烦了吧,看看别人前端,需要一个包只用执行 npm install axio 就行了,好羡慕。

刚好,前段时间在windows下使用了一把vcpkg,目前vcpkg作为c++的包管理工具,已经相对成熟了,很多著名的开源组件都对vcpkg进行了支持。

于是,我们在Ubuntu 20 下 通过Clion来试试可不可以呢?

vcpkg

先来安装一下 Github

# Debian, Ubuntu 要额外执行
$ sudo apt-get update
$ sudo apt-get install build-essential tar curl zip unzip

# CentOS 要额外执行
$ sudo yum install centos-release-scl
$ sudo yum install devtoolset-7
$ scl enable devtoolset-7 bash
$ git clone https://github.com/microsoft/vcpkg
$ .\vcpkg\bootstrap-vcpkg.sh
$ vim ~/.bashrc
# 加入vcpkg的路径到环境变量
export PATH=/home/xmcy0011/data/vcpkg:$PATH
$ source ~/.bashrc # 立即生效
$ vcpkg help # 不报错,则成功

使用方法,记住2个命令即可 searchinstall

$ vcpkg search toml11 # 搜索c++包
$ vcpkg install tmol11 # 安装c++包,并且进行本地编译,后面就可以直接在clion中通过find_packge()使用。

如何在Clion中使用

创建一个项目

配置Clion,使用vcpkg

注意:这个配置是针对项目级别,故每个项目都需要配置。

  • Open the Toolchains settings (File > Settings on Windows and Linux, CLion > Preferences on macOS),
  • and go to the CMake settings (Build, Execution, Deployment > CMake)
  • Finally, in CMake options, add the following line
-DCMAKE_TOOLCHAIN_FILE=[vcpkg root]/scripts/buildsystems/vcpkg.cmake

编辑CMakeList.txt

因为之前已经通过:

$ vcpkg install tmol11
The package toml11:x64-linux provides CMake targets:

    find_package(toml11 CONFIG REQUIRED)
    target_link_libraries(main PRIVATE toml11::toml11)

安装了toml解析的包,安装成功后会打印使用方法如find_packge(…),target_link_libraries(…),我们把它拷贝到CMakeList.txt中使用:

cmake_minimum_required(VERSION 3.0)
project(test_vcpkg_in_clion)

set(CMAKE_CXX_STANDARD 14)

# 这里使用toml11来解析toml文件
find_package(toml11 REQUIRED)
if (toml11_FOUND)
    message("find toml11=${toml11_VERSION}")
endif ()

add_executable(test_vcpkg_in_clion main.cpp)
# 通过静态库的方式使用toml11
target_link_libraries(test_vcpkg_in_clion PRIVATE toml11::toml11)

别忘记了,点击Reload changes,重新生成项目哦。

创建一个toml测试文件

在cmake-build-debug目录下面创建一个example.tmo文件,内容如下:

[server]
ip = "127.0.0.1"

如何使用安装的toml11库?

使用的话,就很简单了,直接include即可。
main.cpp

#include <iostream>
// 这里的路径是什么,见每个库的github说明
// 比如vcpkg install spdlog,使用方法是:#include "spdlog/spdlog.h"
#include "toml.hpp"  

int main() {
    auto data = toml::parse("example.toml");
    auto &server = toml::find(data, "server");
    std::string ip = toml::find<std::string>(server, "ip");

    std::cout << "Hello, World!" << ip << std::endl;
    return 0;
}

编译运行


我们看到,很快的都实现了一个toml的文件解析,是不是很方便呢?

最后,我们来用nm(动态库就是ldd)验证一下:

到此这篇关于Clion下vcpkg的使用的文章就介绍到这了,更多相关Clion vcpkg使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Clion下载安装使用的详细教程(Win+MinGW)

    Clion Jetbrains旗下产品之一,主要用来开发C/C++,软件相比VS来说轻巧很多 一.Clion下载(Crack...) Clion官方下载:http://www.jetbrains.com/clion/?fromFooter C++开发工具 JetBrains CLion 2020.1 最新官方正式版 附安装教程 先别急着运行软件! 二.MinGW 环境配置 Clion 下载安装完之后并不能直接运行C++项目,需要配置一个环境 链接:http://sourceforge.net/p

  • windows上安装CLion教程及简单使用详解

    一.下载Clion 进去JetBrains官网下载Clion,页面如下,点击下载即可,该软件为正版软件,需要收费激活,如果是学生可以通过学生认证免费使用JetBrains公司下所有软件.认证方法查看我的另一篇文章(⬅点击). 二.安装非常简单,一直next即可. 接下来必须安装mingw,否则代码不能运行 三.安装MinGW 安装成功后打开软件会提示Toolchains are not configured Configure,因此需要安装MinGW或Cygwin或Visual Studio等编

  • JetBrains(IEDA、CLion、Pycharm) 学生获得免费使用资格

    JetBrains针对学生推出了免费使用资格,但是很多同学却不知道或者说不知道怎样获得免费资格,只能千辛万苦的去寻找破解密钥,但现在JetBrains针对盗版的封锁越来越严密,很多密钥过一段时间就会失效,因此通过学生认证来使用JetBrains的软件才是最方便稳定的 一.打开网站 首先打开JetBrains关于学生认证的网站:https://www.jetbrains.com/shop/eform/students,可以看见以下页面: 二.邮箱验证 邮箱验证是所有方法中最快捷方便的,但是该邮箱需

  • 如何使用clion中配置ROS工程

    一.启动法 1:命令行启动clion sudo gedit ~/.bashrc #在bashrc文件中加入 export PATH="/home/gavyn/APPS/clion-2019.1.4/bin:$PATH" #地址根据自己改 #保存退出 source ~/.bashrc #此时即可点击clion图标启动,也可以通过命令行启动,方法如下: #在工作空间(例如:/home/gavyn/桌面/catkin_example)目录下打开终端,执行: source devel/setu

  • C/C++ 开发神器CLion使用入门超详细教程

    CLion是Jetbrains公司旗下新推出的一款专为开发C/C++所设计的跨平台IDE,它是以IntelliJ为基础设计的,同时还包含了许多智能功能来提高开发人员的生产力. Clion2020.2.x最新激活码破解版附安装教程(Mac Linux Windows) https://www.jb51.net/article/200548.htm 同样支持python哦,相信使用过IntelliJ idea开发过java的盆友都很清楚该IDE的强大,所以做为Jetbrains旗下的c/c++开发工

  • 使用Clion刷LeetCode的方法

    首先创建一个project,我这里取名为LeetCode. 安装leetcode editor插件,File–>Settings–>Plugins,直接搜索leetcode就出来了,安装完了记得重启一下IDE. 设置LeetCode用户名和密码 CodeFileName: $!{question.frontendQuestionId}-${question.titleSlug} CodeTemplate: ${question.content} \#include<bits/stdc++

  • Clion下vcpkg的使用详解

    环境 ubuntu 20+ clion 2021.1 背景 在Linux下,每次新创建1个项目,可能会使用一些第三方库,比如: toml解析 spdlog日志 难道每次都要我去重新下载源码,然后编译,在配置CMake?太麻烦了吧,看看别人前端,需要一个包只用执行 npm install axio 就行了,好羡慕. 刚好,前段时间在windows下使用了一把vcpkg,目前vcpkg作为c++的包管理工具,已经相对成熟了,很多著名的开源组件都对vcpkg进行了支持. 于是,我们在Ubuntu 20

  • Redis 对比 Memcached 并在 CentOS 下进行安装配置详解

    Redis 是一个开源.支持网络.基于内存.键值对的 Key-Value 数据库,本篇文章主要介绍了Redis 对比 Memcached 并在 CentOS 下进行安装配置详解,有兴趣的可以了解一下. 了解一下 Redis Redis 是一个开源.支持网络.基于内存.键值对的 Key-Value 数据库,使用 ANSI C 编写,并提供多种语言的 API ,它几乎没有上手难度,只需要几分钟我们就能完成安装工作,并让它开始与应用程序顺畅协作.换句话来说,只需投入一小部分时间与精力,大家就能获得立竿

  • 微信小程序本作用域下调用全局JS详解及实例

    微信小程序本作用域下调用全局JS详解 本地wxml文件 <view> app版本:{{version}} </view> 本地js文件 var app; Page({ data:{ }, onLoad:function() { app = getApp(); this.setData({version:app.globalData.appName}); } }) 全局js文件 //app.js App({ globalData:{ appName:"hcoder"

  • Linux 下sudo网络权限详解

    Linux 下sudo网络权限详解 对于设置了网络代理的服务器,在当前用户下执行网络访问没有问题,但通过sudo执行命令时,就会出现"无网络连接"的错误. 背景 对于设置了网络代理的服务器,在当前用户下执行网络访问没有问题,但通过sudo执行命令时,就会出现"无网络连接"的错误. 普通权限下,wget成功. # wget https://github.com --2016-12-08 09:00:43-- https://github.com/ Connecting

  • linux 下的yum命令详解

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装.yum提供了查找.安装.删除某一个.一组甚至全部软件包的命令,而且命令简洁而又好记. yum的命令形式一般是如下:yum [options] [command] [package ...] 其中的[opt

  • SpringMVC下获取验证码实例详解

    SpringMVC下获取验证码实例详解 前言: 1.用户一开始登录的时候, 不建议出现验证码, 这一点在很多网站上已经体现的很好了, 只有当用户连续输错三次或者以上才会要求用户输入验证码. 2.记录用户输错次数最好不要使用 session 来记录, 因为 session 是跟客户端浏览器会话有关的, 如果用重启浏览器或者换新的浏览器再来登录或者试错, 就是新的回话了, 原来记录的错误次数就失效了. 建议此处采用缓存机制来实现, 简单处理就是采用 Map<用户登录id, 错误次数> 来实现, 如

  • mysql 5.7 zip 文件在 windows下的安装教程详解

    1.下载mysql最新版本. http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.15-winx64.zip 2.解压到文件夹. D:\software\mysql\mysql5.7a 将my-default.ini 复制为 my.ini 3.编辑my.ini # These are commonly set, remove the # and set as required. basedir ="D:/software/mysql/mysql

  • yii2带搜索功能的下拉框实例详解

    简单的小功能,但是用起来还是蛮爽的.分享出来让更多的人有更快的开发效率,开开心心快乐编程. 如果你还没有使用过composer,你可就out了,看我的教程分享,composer简直就是必备神奇有木有.都说到这个点上了,我们赶紧使用composer进行安装吧. 先给大家展示下效果图: 下面给大家说下具体实现思路: composer require kartik-v/yii2-widget-select2 "@dev" #特别说明,因为这里安装的dev版本,也就是开发版本,不稳定版本,如果

  • ubuntu 下的nginx服务器配置详解

    ubuntu 下的nginx服务器配置详解 1.nginx服务器的安装 sudo apt-get install nginx 2.nginx服务器的启动 sudo /etc/init.d/nginx start 3.多域名对应不同的后台服务器 在/etc/nginx/sites-enabled/ 目录中删除default配置文件 新建域名对应的配置文件 比如test.youlunshidai.com #通过upstream nodejs__upstream 可以配置多台nodejs节点,做负载均

  • Spring 多线程下注入bean问题详解

    本文介绍了Spring 多线程下注入bean问题详解,分享给大家,具体如下: 问题 Spring中多线程注入userThreadService注不进去,显示userThreadService为null异常 代码如下: public class UserThreadTask implements Runnable { @Autowired private UserThreadService userThreadService; @Override public void run() { AdeUs

随机推荐