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个命令即可 search 和 install
$ 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 下使用 Valgrind 内存检查 [Mac;Linux;Window多平台]
文章目录 安装 Valgrind 配置 CLion 运行 参考资料 安装 Valgrind Macos: brew tap LouisBrunner/valgrind brew install --H ...
- CLin 和 IDEA创建文件时自动添加作者和时间信息 + 多个.cpp文件在CLion下运行问题...
CLin 和 IDEA创建文件时自动添加作者和时间信息 file -> setting -> Editor -> File and Code Templates -> 点击In ...
- CLion下开发OpenGL项目,忘记进入glad.c文件造成的问题
CLion下开发 OpenGL项目,引入了glfw3 glad ,这些都是在 CMakeLists.txt文件中配置的,这一点来说,比VS 2019下开发简单的多,VS下的配置项目看起来太乱.作为Li ...
- LVGL模拟器在Clion下的实现(Win10)
目录 LVGL模拟器在Clion下的实现(Win10) 一.CLion环境搭建及踩坑 二.为什么使用模拟器 三.LVGL模拟器的实现 1.下载示例库代码 2.安装SDL2(Win10) 3.添加项目 ...
- Clion下的STM32环境安装(包运行调试)
@TOC 准备 参考链接:配置CLion用于STM32开发 挑选工具 一.环境类选择: Java:jre-8u341-windows-x64(STM32CubeMX下载过有用的说明有java环境,不需 ...
- Qt5.15.2 Cmake Clion下如何使用QPixmap显示JPG图片
在Main.cpp的文件下,Main 函数的第一行加入: QApplication::addLibraryPath(R"(C:\Qt\5.15.2\mingw81_64\plugins)&q ...
- mac clion 下 stdio.h file not found
执行文件时提示 stdio.h file not found clion 编辑器不会自带标准库,会找系统的c标准库 安装后,clion默认找的是/Library/Developer/CommandLi ...
- Clion下使用EasyX
前言 easyx官方目前只支持vc++和visual studio,不过有人对easyx进行了封装,使其适配mingw. 步骤 下载easyx4mingw,解压并重命名文件夹为easyx4mingw. ...
- linux没有图形界面opcv,关于Linux/ubuntu的环境下安装OpenCV并配置Clion【全套攻略】及关于'Opencv'file not found 的问题...
1.如何在Linux/ubuntu配置OpenCV 1.1 :进入OpenCV官网下载:(也可进入git Hub 在终端Clone) 等待下载完成 1.2:安装OpenCV: 笔者下载的是Opencv ...
最新文章
- Musical Theme pku1743 (后缀数组)
- zephyr_Facebook,IBM,Yahoo和更多新闻发布的物联网Zephyr项目
- 华为云苏光牛:生态建设是数据库产业发展非常重要的一环
- e的矩阵次方_利用状态转移矩阵和VBA求游戏中各种事件达成次数的期望
- Leetcode 561.数组拆分I
- JWT、JWE、JWS 、JWK 都是什么鬼?还傻傻分不清?
- ThinkPHP5.1设置404页面
- 尝鲜ESXi7.0,手工注入LSI MegaRAID 9260-8i驱动,封装iso安装文件
- Linux修改IP地址
- 继电器写法c语言单片机,51单片机-继电器编程
- Cocos2d-Html5--打怪升级之路
- 如何在工作中形成自己的方法论(待完善)
- 玉米生吃好还是熟吃好 各种情况分析
- linux系统指令打开背景设置,桌面应用|如何修改 Linux 的 GRUB 启动背景
- java 线程的构造函数_深入理解Thread构造函数
- pc端1号店项目用JQ实现二级菜单和轮播图
- dwg图纸的预览功能
- 《联邦学习实战》杨强 读书笔记十七——联邦学习加速方法
- 东京・京都“APARTMENT HOTEL MIMARU”首次导入运用智能音箱和聊天机器人的IT服务
- Unity面试题ABC(Yanlz+A经典面试题+C#问题+Unity问题+...+F高薪就业+...+立钻哥哥+...)
热门文章
- vega 8核显相当于什么显卡
- Spark2.2.0集群搭建部署之【HADOOP集群篇】
- Java中一个接口可以继承多个接口吗?接口继承接口使用extends关键字
- C语言用func函数编写程序,C语言程序设计教程第四章练习题解析(1)
- linux安装node(含npm命令) 并配置淘宝镜像源
- node.js异步编程
- revoke mysql_浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解
- CF 690C3. Brain Network (hard) from Helvetic Coding Contest 2016 online mirror (teams, unrated)
- 20200728 Vue 定时器
- 【考研英语语法】现在进行时习题