首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何知道程序需要什么版本的libclibstdc++

    用对应版本的系统编译对应版本的二进制即可。一般软件对libc、libstdc++的要求都不会太高,系统别太老一般都能跑。...C++的版本管理简单粗暴,像libc这种基础库如果需要多版本,用起来非常不方便,但c/c++基础库都是向下兼容的,最好的方式就是用一套比较新的系统,带着新的libc,再安装一套和系统版本同年代的新一点的...查看所依赖的libc版本,可以看出当前Libc的版本是2.28。...而Libc是向下兼容的,从库中定义的一些字符串常量可以知道兼容哪些版本: 当前是2.28 向下兼容到2.3 $ ll /lib64/libc.so.6 lrwxrwxrwx 1 root root 12...:2.15 libcxx的版本为:3.4.21 而当前系统提供: libc的最新版本:2.28 libcxx的版本:3.4.25 strings /usr/lib64/libstdc++.so.6 |

    2.6K30

    面向 C++ 的现代 CMake 教程(四)

    然而,目标导出文件是在安装之前生成的,在构建阶段,此时我们不知道安装的工件将去哪里。...首先,我们学习了如何从项目中导出 CMake 目标,以便它们可以在不安装它们的情况下被其他项目消费。然后,我们学习了如何安装已经为此目的配置好的项目。...我们现在知道 CMake 如何处理各种工件类型的不同目的地以及如何处理 somewhat special 的公共头文件。...首先,我们学习了如何从项目中导出 CMake 目标,以便它们可以在不安装它们的情况下被其他项目消费。然后,我们学习了如何安装已经为此目的配置好的项目。...我们现在知道 CMake 如何处理各种工件类型的不同目的地以及如何处理 somewhat special 的公共头文件。

    67700

    CMake 秘籍(六)

    生成导出头文件 导出你的目标 安装超级构建 引言 在前几章中,我们已经展示了如何使用 CMake 配置、构建和测试我们的项目。...可以一次性设置多个目标的安装规则:CMake 知道它们是什么类型的目标;也就是说,它们是可执行文件、共享库还是静态库: install( TARGETS message-shared...本食谱将展示如何使用 CMake 导出我们的目标,以便使用 CMake 的其他项目可以轻松地获取它们。...该文件将包含我们导出的目标。我们还添加了一个测试,以检查项目的安装和导出是否按预期工作。 如何操作 再次,根CMakeLists.txt文件与前一个食谱相比未更改。...这次,我们添加了EXPORT关键字,以便 CMake 将为我们导出的目标生成一个导出的目标文件: install( TARGETS message-shared message-static

    40800

    CMake库打包以及支持find_package

    CMake导出库经过上述步骤,我们已经安装了我们库的所有东西,现在其他用户可以通过include_directories和add_libraries以及制定链接的目标等相应操作来使用我们的库,但是我们希望能够像...为此,CMake提供了目标导出的功能。导出一个目标能够让我们重复利用一个CMake工程,比如一些变量等等,就像用户自己定义的一样,最常见的就是OpenCV和NDK这类的工程。...为了使用导出功能,需要创建一个my_library.cmake文件,其中包含了所有编译和安装目标的引用,用户只需要包含这个文件就可以使用前面编译和安装的库。...为了能够导出my_library库,我们需要做两件事:首先,对于每个目标,需要指明其是否导出。...[minor]/${CMAKE_BUILD_TYPE}/中,这条命令也将目标加入导出集合中。

    53700

    面向 C++ 的现代 CMake 教程(二)

    接下来,我们研究了如何作用域化我们目标和宿主机器的环境,它们之间的区别是什么,以及通过不同的查询可以获取关于平台和系统的哪些信息。...这些都是伪目标,或者没有包含在生成的构建系统中的目标。 导入的目标 如果你浏览了目录,你知道我们将讨论 CMake 如何管理外部依赖项——其他项目、库等等。...我们尚不知道如何检测目标主机上是否可用的 protobuf 编译器(我们将在第七章中学习,使用 CMake 管理依赖)。所以,现在,让我们假设编译器的protoc命令位于系统知道的某个位置。...我们将发现编译是如何工作的,它的内部阶段是什么,以及它们如何影响二进制输出。...我们已经知道如何打印更详细的 CMake 输出(如在第一章中讨论的,CMake 的初步步骤),但我们如何分析在每个阶段实际发生的情况呢?

    70500

    你想知道,Microsoft Edge这种巨型项目是如何进行版本管理的吗?

    不知道你有没有好奇过,像Microsoft Edge这种巨型项目是如何进行版本管理的? 当然关于这个问题我就需要先解释一下,因为Edge是多么巨型的一个项目很多人可能并没有概念。...那么再次回到开始的问题,你有好奇过像Edge这种巨型项目是如何进行版本管理的吗? 今天我们就来揭秘一下。...这对于一些小白用户可能直接就给整懵圈了,搞这么多版本干啥,我都不知道该用哪个好了。 是啊,直接就上架一个稳定版不就好了吗?为什么还要分什么Canary、Dev、Beta版本?...所以,每天的Canary版本都会有许多不一样的地方,虽然我们也不知道具体有哪些不一样(毕竟每个人都只负责自己的一小部分),但神通广大的网友总是可以发现,并帮忙提出问题。...现在你知道,像Edge这种巨型项目是如何进行版本管理的了吧。 介绍完了关于Edge的这些知识点,接下来再跟大家讲一讲现在移动端Edge的现状吧。

    1.2K30

    万字总结编译利器CMake,从入门到项目实战演练

    然后我们添加了一个自定义命令来详细描述如何通过运行MakeTable来产生Table.h。接下来,我们需要让CMake知道mysqrt.cxx依赖于生成的文件Table.h。...解决方案是无论构建类型如何,都将SqrtLibrary的POSITION_INDEPENDENT_CODE目标属性显式设置为True。...这是通过将以下内容添加到顶级CMakeLists.txt的底部来完成的: 安装(导出 MathFunctionsTargets 文件 MathFunctionsTargets.cmake 目标...CMake试图说的是,在生成导出信息的过程中,它将导出与当前机器固有联系的路径,并且在其他机器上无效。...导入一个CMake项目(消费者) 本示例说明项目如何查找生成Config.cmake文件的其他CMake软件包。 它还显示了在生成Config.cmake时如何声明项目的外部依赖关系。

    1.3K00

    CMake构建学习笔记15-组建第一个程序项目

    1 概述 在前文中论述的都是如何使用CMake构建第三方依赖库,不过这些库都是别人的程序项目,那么如何使用CMake组织构建一个属于自己的C/C++程序项目呢?...cmake_minimum_required表示cmake的最低版本要求,CMake的很多特性是随着版本逐渐增加的,需要保证使用的CMake特性满足最低版本的要求。...具体来说,我们在使用CMake构建安装依赖库的时候,会生成诸如“XXXConfig.cmake”的配置文件到安装目录,文件中存在诸如add_library或add_executable等命令,就说明该依赖库的目标导出...如果没有提供目标链接的方式,那么就可以考虑使用传统的头文件和库文件的引入方式,最简单无脑的方式就是使用绝对路径了: # 输出cmake版本提示 message(STATUS "The CMAKE_VERSION...,从而理解CMake的设计思路,就知道如何去写CMakeLists.txt文件了。

    12110

    xmake v2.3.7 发布, 新增 tinyc 和 emscripten 工具链支持

    而不需要关心 autotools/cmake 需要如何去配置使用和编译,毕竟 cmake 对于 windows 和 linux 平台,需要生成不同的构建文件,编译方式也是不同的,一会调用 make,一会调用...如果你们用过 autotools/cmake 去交叉编译生成 mingw/android/ios 的目标程序,cmake 和 autotools 还能够简单一致的处理么?...递归导出安装的包 xmake 之前提供了一个命令,可以导出通过 xmake 安装的所有第三方依赖包。...xmake require --export 但是,之前的版本对应一些存在依赖的包,导出时候只会导出自身,它的所有依赖是不会被导出的,而这个版本中,我们对其进行了改进,将对应的所有依赖包也进行了导出。...改进 CMake 工程文件生成器 #931: 改进导出包,支持导出所有依赖包 #930: 如果私有包定义没有版本定义,支持直接尝试下载包 #927: 改进android ndk,支持arm/thumb

    1.3K10

    CMake 秘籍(五)

    这是因为 CMake 的FindBoost.cmake模块手动创建了导入目标,所以如果 CMake 发布时不知道 Boost 版本,将会有Boost_LIBRARIES和Boost_INCLUDE_DIRS...该变量将由 CMake 用作导出的FFTW3::fftw3目标的搜索目录: include(GNUInstallDirs) set( FFTW3_DIR ${STAGED_INSTALL_PREFIX...这样的文件将库作为目标导出,供第三方项目使用。目标包含版本、配置和库的位置,即有关目标如何配置和构建的完整信息。...CMake 如何确定目标的链接器语言?对于不混合编程语言的目标,选择很简单:通过用于生成对象文件的编译器命令调用链接器。...我们从第 3 个配方,构建和链接共享和静态库,在第一章,从简单可执行文件到库中已经知道,CMake 接受以下选项作为add_library的第二个有效参数: STATIC,用于创建静态库;即,用于链接其他目标

    73120

    面向 C++ 的现代 CMake 教程(一)

    您还将了解如何将外部依赖项添加到项目中:第三方库、测试框架、程序分析工具和文档生成器。最后,您将探索如何为内部和外部目的导出、安装和打包您的解决方案。...第四章,与目标工作,介绍了逻辑构建目标,这些目标为可执行文件和库生成工件。 第五章,使用 CMake 编译 C++源代码,解释了编译过程的细节以及如何在 CMake 项目中控制编译过程。...CMake 本身不能构建任何东西——它依赖于系统中的其他工具来执行实际的编译、链接等任务。你可以把它看作是你构建过程的协调者:它知道需要做哪些步骤,最终目标是什么,以及如何找到合适的工人和材料。...现在你知道最终结果长什么样了,我相信你会有很多问题:这个过程的前提条件是什么?这些命令意味着什么?为什么我们需要两个?我如何编写自己的项目文件?不要担心——这些问题将在接下来的章节中得到解答。...总结 现在你已经了解了 CMake 是什么以及它是如何工作的;你学习了 CMake 工具家族的关键组成部分以及如何在各种系统中安装它们。

    1.3K01

    从零开始编写一个cmake构建脚本

    cmake构建脚本编写步骤cmake构建工具版本要明确# 命令名字要小写,这条语句要求构建工具至少需要版本为3.12或以上cmake_minimum_required (VERSION 3.12)工程名及库的版本号明确在编写工程名以及版本号时有几点需要注意...cmake内置变量所继承,例如主版本号PROJECT_VERSION_MAJOR=0,次版本号PROJECT_VERSION_MINOR=0,补丁版本号PROJECT_VERSION_PATCH=0,后续可以直接使用这三个内置变量来使用库的版本号配置构建语言可以自己根据工程配置需要构建的语言...) # TARGET_NAME 本库生成的库名, 通过 add_library 添加 引入三方库源码以及本库源码等生成目标TARGET_NAME引用其他三方库的二进制文件(.so)通过target_link_libraries...库对外提供被find_package的能力install后,所有导出的头文件、动态库、静态库、可执行二进制、cmake文件都可以安装到指定路径下install(TARGETS ${TARGET_NAME...} #TARGETS 安装的目标文件,可以是可执行文件、动态库、静态库 EXPORT ${TARGET_NAME} #需要对外导出的文件,该选项用于生成xxxConfig.cmake

    15520

    xmake v2.5.2 发布, 支持自动拉取交叉工具链和依赖包集成

    这是用来干什么的呢,做过交叉编译以及有 C/C++ 项目移植经验的同学应该知道,折腾各种交叉编译工具链,移植编译项目是非常麻烦的一件事,需要自己下载对应工具链,并且配置工具链和编译环境很容易出错导致编译失败...现在,xmake 已经可以支持自动下载项目所需的工具链,然后使用对应工具链直接编译项目,用户不需要关心如何配置工具链,任何情况下只需要执行 xmake 命令即可完成编译。 ?...$ xmake f -p windows -a x64 --toolchain=zig $ xmake 自动导出所有 windows/dll 中的符号 cmake 中有这样一个功能:WINDOWS_EXPORT_ALL_SYMBOLS...,安装 cmake 文档中的说法: https://cmake.org/cmake/help/latest/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.html Enable...另外,如果项目中的符号太多,也可以用此来简化代码中的显式导出需求。 我们只需在对应生成的 dll 目标上,配置 utils.symbols.export_all 规则即可。

    1.8K10
    领券