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