环境

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. 安装yarn 心得分享
  2. mysql+8.0+新特性_MySQL 8.0的一些新特性汇总大全
  3. 电话双音频拨码信号采集
  4. CentOS7 Tomcat安装
  5. Palindromic Numbers LightOJ - 1205 数位dp 求回文数
  6. 利用webBrowser实现万能打印
  7. Effective Objective-C 的读书笔记
  8. Cannot resolve plugin org.apache.maven.plugins:xxxx
  9. 代码整洁之道 python_《代码整洁之道》与 Python 之禅
  10. 应用商店优化(ASO)之关键词及描述优化
  11. java gui 字体颜色练习
  12. 联通笔试真题(有答案)
  13. 台式计算机内置无线网卡,台式机内置无线网卡和外置的区别
  14. 书籍推荐-docker入门书籍
  15. mysql的event_mysql中event的用法详解
  16. web测试-WEB常用测试用例集
  17. word文档保存文件时出错_保存时如何自动创建Word文档的备份副本
  18. burg算法matlab求功率谱,基于AR模型的Burg算法功率谱估计.doc
  19. 507. 完美数-c语言
  20. 情人节,教大家使用CSS画出一朵玫瑰花。

热门文章

  1. Xsehll连接Linux进入VIm后不能鼠标右键复制
  2. Windows内使用Tomcat新建虚拟主机,并使用telnet访问
  3. java-net-php-python-jspm服务器密码管理系统计算机毕业设计程序
  4. Boolean类型(基本与包装类型)
  5. mysql数据库如何循环_mysql数据库如何循环语句
  6. html之 pre标签下的div标签测试2208082212
  7. 纯函数(Pure functions)
  8. IDS(入侵检测系统)
  9. 高德地图使用——定位城市
  10. 【python语法】字符串常用函数