环境

ubuntu 20+
clion 2021.1

背景

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

  • toml解析
  • spdlog日志

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

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

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

vcpkg

  1. 先来安装一下 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 # 不报错,则成功
  1. 使用方法,记住2个命令即可 searchinstall
$ vcpkg search toml11 # 搜索c++包
$ vcpkg install tmol11 # 安装c++包,并且进行本地编译,后面就可以直接在clion中通过find_packge()使用。

如何在Clion中使用

创建一个项目

配置Clion,使用vcpkg

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

  1. Open the Toolchains settings (File > Settings on Windows and Linux, CLion > Preferences on macOS),
  2. and go to the CMake settings (Build, Execution, Deployment > CMake)
  3. 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的使用相关推荐

  1. CLion 下使用 Valgrind 内存检查 [Mac;Linux;Window多平台]

    文章目录 安装 Valgrind 配置 CLion 运行 参考资料 安装 Valgrind Macos: brew tap LouisBrunner/valgrind brew install --H ...

  2. CLin 和 IDEA创建文件时自动添加作者和时间信息 + 多个.cpp文件在CLion下运行问题...

    CLin 和 IDEA创建文件时自动添加作者和时间信息 file -> setting -> Editor -> File and Code Templates -> 点击In ...

  3. CLion下开发OpenGL项目,忘记进入glad.c文件造成的问题

    CLion下开发 OpenGL项目,引入了glfw3 glad ,这些都是在 CMakeLists.txt文件中配置的,这一点来说,比VS 2019下开发简单的多,VS下的配置项目看起来太乱.作为Li ...

  4. LVGL模拟器在Clion下的实现(Win10)

    目录 LVGL模拟器在Clion下的实现(Win10) 一.CLion环境搭建及踩坑 二.为什么使用模拟器 三.LVGL模拟器的实现 1.下载示例库代码 2.安装SDL2(Win10) 3.添加项目 ...

  5. Clion下的STM32环境安装(包运行调试)

    @TOC 准备 参考链接:配置CLion用于STM32开发 挑选工具 一.环境类选择: Java:jre-8u341-windows-x64(STM32CubeMX下载过有用的说明有java环境,不需 ...

  6. Qt5.15.2 Cmake Clion下如何使用QPixmap显示JPG图片

    在Main.cpp的文件下,Main 函数的第一行加入: QApplication::addLibraryPath(R"(C:\Qt\5.15.2\mingw81_64\plugins)&q ...

  7. mac clion 下 stdio.h file not found

    执行文件时提示 stdio.h file not found clion 编辑器不会自带标准库,会找系统的c标准库 安装后,clion默认找的是/Library/Developer/CommandLi ...

  8. Clion下使用EasyX

    前言 easyx官方目前只支持vc++和visual studio,不过有人对easyx进行了封装,使其适配mingw. 步骤 下载easyx4mingw,解压并重命名文件夹为easyx4mingw. ...

  9. linux没有图形界面opcv,关于Linux/ubuntu的环境下安装OpenCV并配置Clion【全套攻略】及关于'Opencv'file not found 的问题...

    1.如何在Linux/ubuntu配置OpenCV 1.1 :进入OpenCV官网下载:(也可进入git Hub 在终端Clone) 等待下载完成 1.2:安装OpenCV: 笔者下载的是Opencv ...

最新文章

  1. Musical Theme pku1743 (后缀数组)
  2. zephyr_Facebook,IBM,Yahoo和更多新闻发布的物联网Zephyr项目
  3. 华为云苏光牛:生态建设是数据库产业发展非常重要的一环
  4. e的矩阵次方_利用状态转移矩阵和VBA求游戏中各种事件达成次数的期望
  5. Leetcode 561.数组拆分I
  6. JWT、JWE、JWS 、JWK 都是什么鬼?还傻傻分不清?
  7. ThinkPHP5.1设置404页面
  8. 尝鲜ESXi7.0,手工注入LSI MegaRAID 9260-8i驱动,封装iso安装文件
  9. Linux修改IP地址
  10. 继电器写法c语言单片机,51单片机-继电器编程
  11. Cocos2d-Html5--打怪升级之路
  12. 如何在工作中形成自己的方法论(待完善)
  13. 玉米生吃好还是熟吃好 各种情况分析
  14. linux系统指令打开背景设置,桌面应用|如何修改 Linux 的 GRUB 启动背景
  15. java 线程的构造函数_深入理解Thread构造函数
  16. pc端1号店项目用JQ实现二级菜单和轮播图
  17. dwg图纸的预览功能
  18. 《联邦学习实战》杨强 读书笔记十七——联邦学习加速方法
  19. 东京・京都“APARTMENT HOTEL MIMARU”首次导入运用智能音箱和聊天机器人的IT服务
  20. Unity面试题ABC(Yanlz+A经典面试题+C#问题+Unity问题+...+F高薪就业+...+立钻哥哥+...)

热门文章

  1. vega 8核显相当于什么显卡
  2. Spark2.2.0集群搭建部署之【HADOOP集群篇】
  3. Java中一个接口可以继承多个接口吗?接口继承接口使用extends关键字
  4. C语言用func函数编写程序,C语言程序设计教程第四章练习题解析(1)
  5. linux安装node(含npm命令) 并配置淘宝镜像源
  6. node.js异步编程
  7. revoke mysql_浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解
  8. CF 690C3. Brain Network (hard) from Helvetic Coding Contest 2016 online mirror (teams, unrated)
  9. 20200728 Vue 定时器
  10. 【考研英语语法】现在进行时习题