首页
学习
活动
专区
圈层
工具
发布

重构基于CMake的构建工具链

首先是和 bazel 类似的,很难对依赖包做一些定制。导入一个包的时候,要么不要,要么全要。...但是每个包的版本和对应工具链的兼容性得自己管理,还是十分不便。 第三个问题比较难解决。大多数 vcpkg 里的包都是配置了从github下载的,也有些只从一些其他的URL下载。...虽然说可以配置github的地址,但是 vcpkg 的从github下载包版本的代码里写的是使用的github的开放平台接口。...在 cmake-toolset 里我也添加了对 vcpkg 的适配支持。可以直接导入 vcpkg 的toolchain文件使用,大多数导入的依赖库都支持直接从 vcpkg 中查找 。...所以最终我再Windwows下构建的时候会把依赖编译目录改成 用户目录/cmake-toolset- 中,用来减少一定的长度。

5.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Vcpkg 的安装与使用

    \vcpkg.exe search 包名称 可以搜索你需要安装的包的信息 下面以搜索 openssl 为例:.\vcpkg.exe search openssl 确认有你需要安装的包之后,通过 ....\vcpkg.exe install openssl,第一次安装 vcpkg 会先安装 cmake、git 等依赖,同时安装包还需要编译,需要耐心等待 指定安装架构 vcpkg 默认安装的是 x86-...\vcpkg.exe help triplets 可以查看支持的安装方式 查看已安装的包 使用....\vcpkg.exe list 可以列举已经安装的包 libevent、openssl、opencv、protobuf、grpc、jsoncpp、nlohmann-json 都是比较一些比较常用的包,有需要的可以安装...vcpkg (不要全局导入 vcpkg,别人不知道你在做什么) 通过指定 cmake 工具链实现将 vcpkg 作为一个自模块加入到你的 CMake 工程中,需要注意的是,使用 Mingw 需要额外的设置

    4.9K30

    Vcpkg: 总览

    这个工具和生态链正在不断发展,我们一直期待您的贡献! 若您从未使用过vcpkg或希望了解如何使用vcpkg,请查阅快速开始章节。...有关更多信息,请参见 安装和使用软件包。 如果vcpkg目录中没有您需要的库, 您可以 在GitHub上打开问题。 vcpkg团队和贡献者可以看到它的地方, 并可能将这个库添加到vcpkg。...请参阅 快速开始 在 CMake 中使用 vcpkg 若您希望在CMake中使用vcpkg,以下内容可能帮助您: Visual Studio Code 中的 CMake Tools 将以下内容添加到您的工作区的...Tab补全/自动补全 vcpkg 支持命令,包名称,以及 Powershell 和 Bash 中的选项。 若您需要在指定的 shell 中启用Tab补全功能,请依据您使用的shell运行: > ....示例 请查看 文档 获取具体示例, 其包含 安装并使用包, 使用压缩文件添加包 和 从GitHub源中添加一个包。 我们的文档现在也可以从 ReadTheDocs 在线获取。

    2K10

    CC++ 构建系统,我用 xmake

    " 不支持自动安装依赖包,还需要用户手动执行 vcpkg install xxx 命令安装 vcpkg 的语义版本选择不支持 (据说新版本开始支持了) CMake 和 Conan ```cmake cmake_minimum_required...来安装包 还需要额外配置一个 conanfile.txt 文件去描述包依赖规则 Meson 和 Vcpkg 我没找到如何在 Meson 中去使用 vcpkg 包,仅仅找到一篇相关的 Issue #3500...前面讲了这么多,其他构建工具和包管理的集成,个人感觉用起来很麻烦,而且不同的包管理器,集成方式差别很大,用户想要快速从 Vcpkg 切换到 Conan 包,改动量非常大。...用户可与快速切换使用其他的仓库包,而不需要花太多时间去研究如何集成它们。...(Xrepo) 为了方便 XMake 的自建仓库中的包管理,以及第三方包的管理使用,我们也提供了独立的 Xrepo cli 命令工具,来方便的管理我们的依赖包 我们可以使用这个工具,快速方便的完成下面的管理操作

    3K20

    现代C++工具链实战:CMake + Conan + vcpkg依赖管理

    传统的依赖管理方式面临以下挑战:跨平台依赖编译困难版本冲突问题频繁出现团队协作时环境配置复杂持续集成需要自动化依赖处理经过技术调研,我决定采用CMake作为构建系统,并结合Conan和vcpkg进行依赖管理...CMake:构建系统的核心CMake作为现代C++项目的事实标准,提供了跨平台的构建配置能力。我采用了现代CMake(3.15+)的写法,强调target-based的设计理念。...20)set(CMAKE_CXX_STANDARD_REQUIRED ON)set(CMAKE_CXX_EXTENSIONS OFF)# 导入conan生成的配置文件include(${CMAKE_BINARY_DIR...Conan:跨平台依赖管理Conan作为C/C++的包管理器,解决了跨平台二进制包的依赖问题。...:统一依赖管理:优先使用Conan,vcpkg作为Windows平台的补充现代CMake写法:采用target-based的现代CMake实践分层配置:区分开发、测试、生产环境的依赖配置持续集成:自动化依赖安装和构建过程版本锁定

    13810

    CMake构建学习笔记20-iconv库的构建

    笔者在《c++中utf8字符串和gbk字符串的转换》这篇文章中介绍过如何在Windows下实现utf8字符串和gbk字符串的转换,不过该实现是基于Win32 API的,在其他平台中是无法使用的。...另外,不知道vcpkg的机制是什么,vcpkg确实也使用了cmake来构建,因为生成了cmake的配置文件,可以直接被CMake项目集成使用。...因为vcpkg在安装iconv的时候,也安装了相应的cmake的配置文件,所以可以直接在CMakeLists.txt集成,关键配置代码是: # 项目代码设置为utf-8编码 if ("${CMAKE_CXX_COMPILER_ID...如果是直接使用的vcpkg,那么需要将vcpkg集成到CMake搜索路径中: vcpkg integrate install 如果是像笔者一样,是将iconv复制到自己仓库中使用,那么需要在CMake的内置变量...CMAKE_PREFIX_PATH中增加自己的仓库路径(比如修改CMakePresets.json文件中CMAKE_PREFIX_PATH的配置)。

    7910

    使用vcpkg编译curl

    在vcpkg目录下找到:ports>libpsl>portfile.cmake文件打开。在portfile.cmake文件里面写入set(VCPKG_CRT_LINKAGE static)这一行。...查看curl支持的特性以及说明 命令行执行vcpkg.exe search curl,可以看到类似curl[brotli]这样的列表,中括号里面就是特性,后面对应的则是说明。...]:x86-windows,中括号里面就是特性,可以用逗号分隔以同时支持多个特性。...安装个exescope或者其他pe查看工具,用工具查看编译出来的每个dll,确保他们的导入库里面没有vcruntime,api-ms-api-ms-win-crt之类的,如果有就说明这个dll是MD编译的...去vcpkg>ports目录里面找到那些MD编译的对应的库,找到portfile.cmake文件,打开并在前面加上set(VCPKG_CRT_LINKAGE static)这一行内容。

    79610

    vc第三方库辅助管理工具vcpkg的安装使用

    M$提供的c/c++第三方库集成工具:vcpkg 安装vcpkg很简单,直接从M$的git仓库:https://github.com/Microsoft/vcpkg.git 拉一下代码,然后编译就行了。...CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=C:/Devtools/project/git/vcpkg/scripts/buildsystems.../vcpkg.cmake" 然后,如果想安装三方库,直接使用: PS> ....\vcpkg install ffmpeg 然后vcpkg就自动配置,下载,编译库文件。等他编译完毕后,都设置到了全局的vs ide中,你要做的就是直接#include 库的头文件就行了。...那如果要安装编译某一个架构的开源库,我们该怎么写呢?我们只需要在需要安装的包后面指定相应的triplet即可。例如我们需要编译64位版本的jsoncpp,那么执行如下命令即可。

    7.2K1615

    pycharm中如何导入库_库乐队如何导入相册的视频

    比如机器学习的库sklearn,文件读取pandas,文件读写xlwt,xlrt,矩阵运算numpy等等等等等等等等等等,多到你无法想象!那到底如何导入Python库呢?...=1.0.0: 这是第二种安装方式,但是这种方式安装的库如果死活在PyCharm中找不到呢?...这样我们通过cmd安装在Python的Scripts文件夹中的库就可以直接导入Interpreter了!...还有一个新手可以会犯的错误:很多小伙伴发现,自己新建项目之后,怎么导入的库都不能用了?!还要重新导入?!...并不是,原因是PyCharm新的项目可能会新建一个Interpreter,可能并没有大家想要的库,大家像上面描述的选择Interpreter的过程,选择自己已经安装了很多解释器的那个解释器就好啦,完全不需要重新导入的

    1.4K20

    基于Asio库的定时器,封装实现好用的定时任务

    windows下的下载安装推荐使用vcpkg这个工具,vcpkg是命令行包管理工具。 vcpkg工具介绍 在使用第三方库的c或c++开发中可以简化相关的配置操作。...vcpkg安装的包支持vs2015和vs2017工具集,目前在windows平台已有超过900多个包,linux平台超过350个包。在默认情况下,vcpkg会优先使用vs2017进行编译。.../bootstrap-vcpkg.bat # 搜索想要安装的包 vcpkg search asio # 安装指定的包,包分号后面的表示架构,可用的值为之前列出的那些 vcpkg install asio...:x86-windows # 列出已经安装的包 vcpkg list # 已安装的包更新 vcpkg upgrade # 删除已安装的包 vcpkg remove asio:x86-windows 配合...cmake使用时注意配置CMAKE_TOOLCHAIN_FILE是否设置为了vcpkg.cmake文件路径。

    2.5K20

    打包一沓开源的 CC++ 包管理工具送给你!

    ,一个用 Python 编写的 C/C++ 包管理器。它是完全分散的,你可以自己托管服务器中的包。...文档:https://vcpkg.readthedocs.io/ vcpkg 是由微软爸爸开发的支持 Windows、Linux、Mac OS 的 C++ 库管理器,解决了 Windows 下常用依赖包的管理问题...它方便与 Visual Studio 集成,你可以使用 vcpkg search 搜索可用的包。它也可以从 Bitbucket、GitHub、GitLab 等获取包。...同样的,它也可以直接从 GitHub 上安装库。类似于 Node.js,它也是用 package.json 管理的。...它具有直观且易于使用的界面(像 npm 和 Cargo 一样)。独特的是,你可以在不了解 CMake 的情况下使用 poac 开发应用程序和库,专注于学习 C++ 而不会绊倒。

    1.9K10

    如何从 Debian 系统中的 DEB 包中提取文件?

    本文将详细介绍如何从 Debian 系统中的 DEB 包中提取文件,并提供相应的示例。图片使用 dpkg 命令提取文件在 Debian 系统中,可以使用 dpkg 命令来管理软件包。...该命令提供了 -x 选项,可以用于从 DEB 包中提取文件。...以下是几个示例:示例 1: 提取整个 DEB 包的内容dpkg -x package.deb /path/to/extract这条命令将提取 package.deb 中的所有文件,并将其存放在 /path...示例 2: 提取 DEB 包中的特定文件dpkg -x package.deb /path/to/extract/file.txt这条命令将提取 package.deb 中名为 file.txt 的文件...提取文件后,您可以对其进行任何所需的操作,如查看、编辑、移动或复制。结论使用 dpkg 命令可以方便地从 Debian 系统中的 DEB 包中提取文件。

    5.8K20

    使用 C++ 和 gRPC 的常见陷阱及解决方案

    gRPC 是一个高性能、跨平台的 RPC 框架,结合 C++ 使用时可以构建高效的服务端和客户端。然而,在实际开发中,从环境配置到编译、链接,再到运行时调试,开发者往往会遇到不少“坑”。...本文总结了使用 C++ 和 gRPC 的常见问题,结合 vcpkg、CMake 和 Visual Studio 2022 的实践经验,提供详细的解决方案,帮助开发者少走弯路。1....CMake 配置时意外使用了错误的三元组(triplet)。...protobuf:x64 - windows - static grpc:x64 - windows - static - CMake 配置中强制使用 /MT:-DCMAKE_CXX_FLAGS...()解决方法统一运行时库:安装静态版本依赖:建议在 CMakeLists.txt 中添加全局检查:2.2 未解析的外部符号链接时可能遇到缺少符号定义,尤其是与 Abseil 或标准库相关。

    1K10
    领券