如何告诉 CMake 在编译我的源代码之前下载外部项目

2023-11-23

我有自己的代码,它依赖于第三方库,例如 yaml-cpp 。我想在编译我自己的源代码之前下载这些第三方库。但是,我无法使用 CMake 做到这一点。

我成功下载了 yaml-cpp,如下所示:

ExternalProject_Add(yaml-cpp
                URL https://yaml-cpp.googlecode.com/files/yaml-cpp-0.5.1.tar.gz
                PREFIX ${CMAKE_CURRENT_BINARY_DIR}/yaml-cpp
                CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>

但是当我打字时

cmake ..
make

我的来源是之前编译过的。实际上,yaml-cpp是在最后一步下载的。

您知道如何告诉 CMake 在第一个构建步骤中下载第三方库吗?

Thanks!


ExternalProject创建一个目标。您可以制定第一个目标,例如您的图书馆,依赖于该目标。然后在您开始构建库之前下载它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何告诉 CMake 在编译我的源代码之前下载外部项目 的相关文章

  • CMake 中 LINK_LIBRARIES 的递归列表

    我正在尝试获取链接到 CMake 中特定目标的所有库的绝对路径列表 以便在调用中使用add custom command 然而 get target property LINK LIBRARIES TARGET LINK LIBRARIES
  • CLion - 命令行程序参数

    当我分配给 运行 调试配置 程序参数 之类的 aaa bbb 然后打印它时 任何人都可以告诉我 JetBrains CLion 有什么问题吗 printf s n argv 1 我刚刚得到 aaa 而它必须是 aaa bbb 因为它们用双引
  • 安装 EXPORT 需要子项目中的目标

    我正在尝试编写一个 cmake 脚本来安装我正在处理的项目 其中一部分是必要的install EXPORT LIB EXPORTS where LIB EXPORTS是我在各种项目中一直使用的 EXPORT 属性install TARGET
  • cmake 包括其他目录中的 h 文件

    我在 cmake 项目下进行测试时遇到问题 我的项目是这样安排的 TerrainMap PointAccumulator heightQuadGrid Test 在 TerrainMap 目录中 CMakeLists txt 文件简单地概述
  • 在cmake中设置PKG_CONFIG_PATH

    我已经在本地构建了 opencv 并将其安装到本地目录 不是系统默认目录 opencv pc存在于该本地文件夹中的 pkgconfig 文件夹下 我怎样才能找到这个opencv pc来自 cmake 因为我想从我的程序链接并包含 openc
  • 在 C 中使用 pow 时,CMake 可以检测是否需要链接到 libm 吗?

    对于某些编译器 using powC 程序中的某些其他函数需要链接到m library https stackoverflow com q 8671366 1959975 但是 某些编译器不需要这样做 并且在链接到m图书馆 C 也存在几乎相
  • CMake“无法运行 MSBUILD.exe”命令错误

    当我想为 opencv 3 3 0 创建 Visual Studio 15 2017 make 文件时 它给了我以下错误消息 error in configuration process project files maybe invali
  • CMake 找不到请求的 Boost 库

    既然我已经浏览了其他人的解决方案几个小时 但找不到适合我的问题的正确答案 我想将我的具体问题带给您 我正在尝试使用 CMake 构建 vsomeip 为此 我之前构建了 boost 1 55 但是 我在 CMake 中收到以下错误 The
  • 使用 CMake 在 iOS 中使用另一个 STATIC 库创建一个 STATIC 库

    我有一个 libfooi a 的集合 libfoo1 a libfoo2 a libfoo3 a 使用工厂 带有静态代码 有一个公共接口来创建 C 对象 使用 CMake 我选择其中之一 并创建一个链接它并添加所有内容的 libfooWra
  • 如何将新的 Visual Studio 2017 cmake 功能与 gitlab CI 运行程序结合使用

    我以直接的方式为 Linux 设置了 gitlab ci runner cmake make make test 大致如下 variables GIT SUBMODULE STRATEGY recursive stages build te
  • Cmake选项默认值

    如果我有一个 CMakeLists txt 文件 cmake minimum required VERSION 2 8 OPTION FOO Foo Option OFF MESSAGE FOO FOO 然后我调用 cmake 得到以下输出
  • CMake(Ninja 后端)使用 /MT 编译

    我有一个类似的问题CMake 使用 MT 而不是 MD 进行编译 https stackoverflow com questions 14172856 cmake compile with mt instead of md但有一些差异 我正
  • 带包装的 CMAKE RPATH

    我正在使用 cmake 创建包 我有以下结构 bin bin1 lib lib1 lib2 其中lib1和lib2是外部动态库 如何设置 RPATH 以便它自动与 lib1 和 lib2 链接 我也在这方面对 cmake 很感兴趣 Cmak
  • VS 2010 和 CMake:“rc”未被识别为内部或外部命令

    我正在尝试使用 VS 2010 和 CMake 在 Windows 10 Home 上构建一个项目 我收到以下错误 zutil c lib nologo out zlib lib adler32 obj compress obj crc32
  • Clion如何将文件添加到项目中

    这看起来真的很基本 如何将文件添加到项目中而无需手动编辑CMakeLists txt 例如另一个目录中的源文件 CLion 解析CMakeLists txt并使用它生成项目视图 但我相信将文件添加到项目的唯一方法是编辑CMakeLists
  • CMake:如何更改单个目标的编译器

    我有使用交叉编译器的嵌入式项目 我想介绍一下Google测试 用原生GCC编译器编译 另外使用 CTC 编译器构建一些单元测试目标 Briefly 我有 3 个不同的目标并用 3 个不同的编译器编译它们 如何表达它CMakeLists tx
  • CMake、Exe找不到DLL

    所以我尝试在 Windows 上使用 cmake 设置一个项目 这就是我的项目结构 游戏引擎 git build include source testing CMakeLists txt 这个想法是 source 目录包含 GameEng
  • 使用 CLion IDE 运行 Opengl 程序 [重复]

    这个问题在这里已经有答案了 我知道这个问题已经被问过 但提供的解决方案确实对我不起作用 我想通过 CLion IDE 运行我的 OpenGL 程序 我可以通过 Ubuntu 中的终端运行相同的程序 gcc progname c lglut
  • 即使不在 Windows 上,生成器表达式也会将 WIN32 变量计算为 true

    我在 Ubuntu 上工作 这是我的 CMake 代码的一部分 有问题的部分在最后一句中 include ExternalProject ExternalProject Add fftw3 external URL http www fft
  • 如何在cmake中静态链接到glibc

    我正在尝试从 Fedora 构建一个可以在 RedHat 6 机器上运行的包 所以我需要构建和静态链接一些RedHat机器中不存在的库 我发现我可以你 static libgcc or static libstdc 与标准库的静态版本链接

随机推荐

  • 在组合框中设置默认项目

    我有一个在组合框中设置项目的功能 默认情况下会设置一个项目 例如 选择列表 public void SetOperationDropDown int cbSelectedValue null if cmbOperations Items C
  • 将日期和时间插入Mysql

    我正在尝试将日期和时间插入 mysql 日期时间字段 当用户选择日期和时间时 它将生成两个 POST 变量 我已经在互联网上搜索过 但仍然不知道该怎么做 My code date value is 05 25 2010 time value
  • 从 Assets 目录中获取文件夹名称

    我正在尝试获取 资产 中文件夹的名称 我可以使用 assetManager list 方法通过 AssetManager 获取文件的名称 但问题是它只返回文件名而不返回文件夹名 所以我尝试使用 listFiles 方法 但无法访问 Asse
  • 如何获取给定字体的上升/下降和 x 高度

    我需要得到一个ascender 下降部 and x height 通过使用以下代码 我可以找到下降部分和总高度 descender height paint descent total height descender height pai
  • Git索引和提交很慢

    我有一个本地 git 存储库并使用git add file1 file2 file3 将我的修改添加到 git 索引 然后我用普通的git commit 每个命令大约需要 3 到 6 秒 我的存储库有大约 150 000 次提交 我已经执行
  • 没有名为“matplotlib.artist”的模块

    我遇到了这个错误 No module named matplotlib artist 这是完整的错误 ModuleNotFoundError Traceback most recent call last
  • 通过原型对象或构造函数设置方法,有什么区别? [复制]

    这个问题在这里已经有答案了 您能解释一下构造函数中设置方法和通过原型对象设置方法之间的区别吗 以下代码显示了这两种设置方法的方式 say hello and say bye两者都工作正常 function MessageClass this
  • 将 Java 数组传递给 Scala

    尽管我已经使用 Scala 一段时间 并且之前也将其与 Java 混合使用 但我还是遇到了一个问题 如何将 Java 数组传递给 Scala 我知道相反的方法相当简单 然而从 Java 到 Scala 却并非如此 我应该在 Scala 中声
  • 使用 loadDataWithBaseURL 禁用 webview 中的链接

    我使用以下代码加载电子书的 html 内容 其中 templateString 包含连接到主文件中的样式表和图像的 html 内容 String itemURL file itemPath testWV loadDataWithBaseUR
  • 修改伪选择:after在javascript中[重复]

    这个问题在这里已经有答案了 我定义了一个像 slidingTag li after content z index 3 height 6px 我想从 JS 动态更改高度属性 我可以使用以下方式获得该财产 window getComputed
  • 在 Matlab 中使用 Java 泛型类

    是否可以在Matlab中构造一个参数化类 例如在Java中我可以说ArrayList
  • 如何在Android 2.1中实现Beluga或WhatsApp之类的消息系统

    我正在尝试在我的 Android 应用程序中开发一个消息应用程序 该消息将像 Whatsapp 和 beluga 一样 我用谷歌搜索了一下 发现 C2DM Android 2 2 可以将推送通知发送到设备 但是 这在 Android 2 1
  • 无法卸载内核扩展;类有实例

    我正在为音频设备驱动程序编写 OSX 内核扩展 它是软件 但模拟硬件设备 在开发过程中 完全卸载现有的旧版本 然后从头开始构建并安装新版本会很方便 但是 有时如果不重新启动系统 这似乎是不可能的 程序本身没有运行 源文件已从 System
  • 如何在Ubuntu 14.04上挂载HDFS

    所以 我无法在 Ubuntu 14 04 上挂载 HDFS Mucommander 不工作 保险丝不工作 有人可以用图像解释我或给我一些教程 谢谢 最诚挚的问候 我今天成功地使用了Cloudera 网站上的说明 wget http arch
  • 当该文件作为卷挂载时,pgpass 文件在 pgadmin4 docker 容器中的位置

    我正在使用下面的图片https hub docker com r dpage pgadmin4 在 Ubuntu 18 04 上设置 pgAdmin4 我已经安装了一个卷 其中包含pgpass文件 这也是chmod为了pgadmin正如您在
  • Android Studio 3.3.2 中无法检测adb版本、adb输出

    我已经完成了以下任务来解决问题 下载并更新平台工具 更改Sdk路径并重新下载 重新安装后卸载了Android Sdk平台工具和Android Sdk工具 更新环境中的 adb 路径 更改虚拟内存大小 但它仍然无法正常工作 我正在使用 and
  • Emacs、unicode、xterm 鼠标转义序列和宽终端

    简短版本 当使用 emacs 的 xterm mouse mode 时 有人 emacs bash xterm 拦截 xterm 的控制序列并将其替换为 0 这对于宽显示器来说是一个痛苦 因为只有前 223 列有鼠标 罪魁祸首是什么 我该如
  • 如何将openssl生成的RSA私钥导入AndroidKeyStore

    我想将密钥导入到 AndroidKeyStore 中 所以 我可以通过 openssl 按以下方式生成它 openssl rsa text in privateKey2048 pem openssl pkcs8 topk8 inform P
  • Python:我试图找到列表中两个元素之间的最大差异

    我需要找到列表中任意两个元素之间的最大差异 在列表中 1 2 3 4 5 使用 for 循环时 最大差异为 4 元素 1 和 5 之间 该程序需要输出这两个元素 0和4 的位置及其值 1和5 我只能弄清楚如何找到连续值之间的最大差异 但是如
  • 如何告诉 CMake 在编译我的源代码之前下载外部项目

    我有自己的代码 它依赖于第三方库 例如 yaml cpp 我想在编译我自己的源代码之前下载这些第三方库 但是 我无法使用 CMake 做到这一点 我成功下载了 yaml cpp 如下所示 ExternalProject Add yaml c