问题标签 [external-project]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1680 浏览

c++ - CMake 声明函数对 ExternalProject_Add 的依赖

TLDR

我的问题是 CMake 在下载存储库之前开始执行此功能。我想在 ExternalProject_Add 上声明该函数的依赖项,以便 CMake 了解它应该下载、构建然后运行该函数。

上下文

我有一个 cmake 模块SomeModule.cmake,它应该从其存储库中添加flatbuffers作为外部项目并构建它。该构建将生成 flatbuffers 编译器可执行文件,我打算在some/directory/CMakeLists.txt文件中使用它来从 flatbuffers 模式生成 c++ 头文件。因此,在我使用的同一个 CMake 模块中ExternalProject_Add,我声明了一个 CMake 函数,该函数从给定的一组模式文件生成头文件,并在某处some/directory/CMakeLists.txt调用该函数。

我的问题是 CMake 在下载存储库之前开始执行此功能。我想在 ExternalProject_Add 上声明该函数的依赖项,以便 CMake 了解它应该下载、构建然后运行该函数。

说够了。以下是代码的相关部分:

SomeModule.cmake

并且some/directory/CMakeLists.txt

0 投票
1 回答
250 浏览

build - 如何导出目标,然后通过 ExternalProject 在另一个项目中使用它?

我有一个名为 的 CMake 项目proj1,我想将其用作另一个项目中的外部项目proj2proj1现在, 's中的(相关)命令CMakeLists.txt是:

我想在 中使用这个静态库proj2,而不是明确地“猜测”它的安装位置proj1。我希望能够从中获取此目标proj1(我使用 获取),然后在命令ExternalProject中直接或间接使用它。add_target_libraries()

我该怎么做?而且-我只需要对 's 进行更改proj2还是对proj1's进行更改CMakeLists.txt

0 投票
2 回答
786 浏览

cmake - 如何防止 CMake 外部项目在我制作时更新和重新安装?

经过一番苦恼,我已经成功地安排我的 CMake 项目通过 ExternalProject 使用一些库。我cmake,我make,它起作用了——生活是美好的。

但是,如果我make再次执行,它会为外部项目执行更新和安装步骤。我绝对希望这种情况发生。我该如何防止这种情况?

0 投票
1 回答
5017 浏览

c++ - 如何将使用 ExternalProject_Add 安装的库添加到目标包括

我正在尝试通过 .将外部库包含到 cmake 项目ExternalProject_Add中。为了尝试这个功能,我创建了一个最小的工作示例,其中涉及将 pugixml 添加到项目中ExternalProject_Add。但是,我在寻找从外部项目的本地安装(即 pugixml 的头文件)到项目的包含路径中添加库的头文件的方法时遇到问题。

最小工作示例的项目树组织如下:

在此项目树中,build指的是构建目录和调用 cmake 生成构建的路径。

内容./CMakeLists.txt如下:

在上面的示例中,我将 pugixml 添加为外部项目,该项目将安装在项目的二进制目录中,其文件将由存储在./src. 因此,内容为./src/CMakeLists.txt

这正是我遇到问题的部分。我假设一旦添加并安装了外部项目,ExternalProject_Add就会定义一些方便的库来帮助引用库文件和包含目录。但是,这是行不通的。有谁知道使用ExternalProject_Add包含外部库的正确方法是什么?

0 投票
0 回答
173 浏览

c++ - CMAKE ExternalProject_Add(如何指定插件的搜索路径)

我正在使用 Ubuntu 16.04 和 CMakeExternalProject_Add为我自己的项目安装软件 PCL 和 PDAL。

我想链接 PDAL 和 PCL,因为 PDAL 可以选择将 PCL 构建为插件。基本上我的 PCL 的 CMake 脚本将首先执行以在特定路径下安装 PCL (example) build/src/pcl。然后 PDAL 将接下来安装并寻找 PCL 作为插件链接。我的 PDAL 的 CMake 脚本是

PDAL CMake 脚本能够检测到构建 PCL 插件的选项已启用,但它试图在usr/lib/or下查找 PCL 函数和库usr/share/local

我可以包含哪些其他 CMake 参数来让 PDAL CMake 脚本在下面查找 PCL build/src/pcl

我试图包括DPCL_DIR = build/src/pclDCMAKE_PREFIX_PATH = build/src/pcl无济于事。任何朝着正确方向的帮助或指导表示赞赏!

0 投票
1 回答
82 浏览

cmake - cmake第三方项目步骤

我们在源代码中使用供应商代码作为第三方项目。供应商代码使用 Makefile,为此我们为供应商源代码编写了新的 CMake add_custom_target。

要将库从供应商特定的 build/lib 目录复制到我们的 CMAKE 二进制/库目录,我编写了 Step 以将所有库复制为

ExternalProject_Add_Step(CopyStep)

但是我看到每当我构建时,CopyStep 都会一直执行。有没有办法控制 CopyStep 仅在库发生更改时才执行(类似于 Make,只要没有代码更改,就不会重建源代码)。

让我知道是否有其他方法可以进行复制等。

0 投票
1 回答
111 浏览

cmake - cmake 第三方步骤依赖

我们在源代码中使用供应商代码作为第三方项目。该派对项目托管在不同的服务器上。

我们的应用程序需要包含来自第三方项目的头文件。到目前为止,应用程序cmake依赖于外部项目,直到外部项目安装完成,应用程序才会开始构建。

逻辑上,一旦第三方项目被下载并且头文件可用,应用程序就可以开始构建。为了达到同样的效果,我可以有一个取决于配置/下载的步骤

ExternalProject_Add_Step(CopyHeaderFileStep DEPENDS 配置)

但是,由于它只是一个步骤,而不是目标,因此我无法在我的应用程序 CMake 中指定 CopyHeaderFileStep 的依赖关系。

我仔细查看了 cmake 第三方文档,但没有任何帮助。这里有什么出路吗?

0 投票
1 回答
152 浏览

cmake - cmake3外部项目添加步骤循环

目前我有 External_Project_Add_Step 将目录从“源目录”复制到“目标目录”。最近我意识到我在这个过程中复制了大约 4 GB 的数据,而我实际上需要复制选择性文件(许多文件但总大小约为 1 GB)。

但是,我确实有要复制的文件列表。我想知道我是否可以在 External_Project_AddStep 中放置循环以单步复制所需的所有文件。如下所示(虽然它不起作用)

我相信可能的解决方案可能是通过 ExternalProject_Add_Step 调用脚本,该脚本在内部复制或使用不同的步骤名称对 ExternalProject_Add_Step 进行循环。不确定哪种方法更清洁/更好

0 投票
0 回答
283 浏览

c++ - CMake 外部项目 QT

我找不到任何关于如何使用 ExternalProject_Add 命令在 cmake 项目中下载、构建和链接 Qt5 的示例

我发现了一些片段,但它们本身并不是很有用:

那么这到底应该如何工作呢?

由于 Qt 是一个如此大的库,我认为现在应该由几个人完成......但据我所知,我没有找到任何好的例子。

我发现的最接近的问题是这个,但没有回答我的问题: CMake ExternalProject_Add Stop Executing on Warning

0 投票
2 回答
158 浏览

c++ - CMake链接到外部项目

我是 cmake 的新手,想在我的程序中使用以下外部项目。( https://github.com/mfontanini/cppkafka ) 这个想法是从 git 下载并使用我已经管理过的 cmake 构建。最后,我留下了一个 .so 文件,然后我必须将其链接回主项目。关于如何实现这一目标的任何想法?另外,想要一些关于如何使用 cmake 管理项目中的依赖项的建议,这些依赖项可能会被带到生产环境中。