问题标签 [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 回答
4125 浏览

visual-c++ - CMake - 如何将 Windows SDK 版本传递给使用 msbuild 构建的 ExternalProject?

我有一个具有外部依赖项(Crypto++)的 CMake 项目。外部项目提供了一个vcxproj文件,因此为了将其添加到构建过程中,我将其添加如下:

在我开始使用 Windows 10 之前,这一直很好。现在我收到了这个错误:The Windows SDK version 8.1 was not found. Install the required version of Windows SDK or change the SDK version in the project property pages or by right-clicking the solution and selecting "Retarget solution".

我尝试使用我能找到的唯一相关 CMake 变量从 CMake 传递 SDK 版本,方法是将此标志添加到 msbuild:

但是,我仍然遇到同样的错误。我尝试显示CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION变量的值,但它似乎总是空的。

修改依赖vcxproj项不是一种选择。我事先不知道需要构建项目的人安装了哪个 SDK 版本,所以这不是一个选项。

我找不到任何方法来获取 SDK 版本并将其传递给外部项目构建,我做错了什么?

0 投票
2 回答
1080 浏览

c++ - CMake:构建和安装本地存储的子模块

Stack Overflow 上有很多类似的问题,但没有一个可以回答我的问题。

我有一个使用 CMake 构建的 C++ 库:

然后我创建另一个包含上述库的库或可执行文件:

并想像这样使用mylibinside myapp。请注意mylib标题如何包含在类似格式的目录中:

mylib应在构建时构建myapp,以便以下工作无需任何其他构建步骤

这是我查看过的一些 Stack Overflow 帖子的列表。我已经尝试过每一个,但它们根本不起作用:

0 投票
1 回答
1282 浏览

xcode - CMake:如何使用 *nix 系统上的所有内核构建外部项目?

我正在开发一个基于 CMake 的项目,该项目依赖于也使用 CMake 的巨大第三方代码库。我通过 ExternalProject_Add 机制包括第三方项目。该项目默认使用 Makefiles,尽管父项目是 Xcode 项目。

生成的外部项目非常缓慢,因为它只使用一个内核。我不认为我可以强制项目生成 Xcode 项目而不是 Makefile。

假设我坚持使用 Makefile,我如何通知 ExternalProject_Add 使用可用于泰坦尼克号第三方项目的所有内核?

请注意,添加不可避免的“-j N”选项(为什么默认情况下不使用“make”?)需要有条件地出现在 Mac 和 Linux 版本中,而不是 Windows/Visual Studio。

0 投票
1 回答
651 浏览

cmake - 使用 dockcross 从 ExternalProject_Add 构建项目

我正在尝试使用ExternalProject_Add. 它在我的主系统(Arch Linux)上运行良好,但是在dockcross(更具体地说,dockcross/linux-armv6)中运行它时遇到了一些问题。

以下最小的 CMakeLists.txt 从dockcross 工作(配置和构建):

但以下没有(注意添加的行:)CONFIGURE_COMMAND ${CMAKE_COMMAND} -S<SOURCE_DIR>

它实际上导致以下错误输出:

直接从dockcross(即不使用ExternalProject_Add)构建tinyxml2 效果很好。

那里可能出了什么问题?

0 投票
0 回答
76 浏览

c++ - CMake ExternalProject 依赖冲突

我正在将现有的 C++ 构建系统迁移到 CMake,并且我对外部项目依赖项有疑问。

场景是我们有两个项目 A 和 B。

项目 A 使用以下命令将 googletest 作为外部项目引入:

请注意,项目 A 取决于release-1.8.1googletest。

现在,项目 B 使用相同的命令拉入 googletest,但依赖于release-1.7.0(不同于项目 A 的依赖项)并且项目 B 也将项目 A 作为另一个外部项目拉入。

当我们在项目 B 上运行 cmake 时,这是否会在 googletest 版本之间产生某种冲突?

0 投票
1 回答
646 浏览

cmake - “正常”构建和 ExternalProject_Add 之间的行为差​​异

我正在尝试使用 CMake 的外部项目功能在 linux 上构建 ceres-solver。

我有一个我构建的特定版本的 Eigen,其他依赖项是通过我的数据包管理器(BLAS、LAPACK 和 Suitesparse)安装的。

如果我直接从源代码构建 Ceres-solver:

它会自动找到 suitesparse 及其所有依赖项(BLAS、LAPACK、AMD、COLAMD 等),并且可以毫无问题地构建。

这是 CMake 输出:

但是如果我将 Ceres-solver 构建为外部项目,它不会找到 BLAS(当我直接从源代码构建时会自动找到相同的 BLAS)。

ExternalProject_Add通过手动构建库与单独构建库时的行为是否存在差异?我的“主”项目(调用ExternalProject_Add者)中定义的选项和变量是否会泄漏到外部项目(如果是,我该如何防止这种情况发生?)。

我的电话ExternalProject_Add

以及 ceres-solver 的配置输出:

0 投票
2 回答
276 浏览

c++ - 将使用 ExternalProject_Add 构建的库链接到使用 CMAKE_CXX_COMPILER 配置的项目时出错

我的 CMake 项目使用我使用ExternalProject模块添加的gtest库。这通常有效,但是当我将项目配置为使用Clang 3.8工具链时,例如:

我在Ubuntu 16.04下收到以下链接器错误:

问题似乎是gtest是使用系统范围的编译器GCC 5构建的,并且 ignores CMAKE_CXX_COMPILER。确保所有依赖项都使用相同的工具链构建的正确方法是什么?

0 投票
1 回答
569 浏览

cmake - CMake:在 ExternalProject_Add 中下载并解压多个文件

我想使用 CMake 的 ExternalProject 功能在 Windows 上自动编译 OpenSSL。在配置中,我可以指定一个下载 URL。但是我需要多个附加文件,我希望将它们解压缩到同一个源目录中。所以这是意图:

这似乎是不可能的。指定多个 URL 条目会导致以下错误消息:

有没有办法在 CMake 中做到这一点?

0 投票
1 回答
464 浏览

cmake - 如何使用 HTTPS URL 请求 GIT_REPOSITORY 的密码

git 命令理解的 URL 可以是 HTTPS 或 SSH 格式。

在 CMake 中,可以使用 git 命令理解的任何 URLExternalProject_Add来指定指定的URL。GIT_REPOSITORY

必须提供使用 HTTPS 用户凭据才能“克隆”私有存储库。因为ExternalProject_Add,这种机制在使用时HTTP_USERNAME以形式存在。HTTP_PASSWORDDOWNLOAD_COMMAND

因为GIT_REPOSITORY似乎没有这样的方法。使用时:

在私有存储库上给出以下错误:

问题

GIT_REPOSITORY使用 HTTPS 连接到私有存储库时,如何让 CMake 请求密码ExternalProject_Add

0 投票
1 回答
318 浏览

cmake - CMake ExternalProject_Add 每次都会重建

我将 OpenSSL 作为我的 CMake 项目的一部分。由于它没有自己的 CMake 文件,因此我将其构建为 ExternalProject。不幸的是,每次我重建我的项目时,ExternalProject 也会重建,它是迄今为止最大和最慢的部分。

如何避免每次都在重建 ExternalProject?

我试过 BUILD_ALWAYS = false 但没有帮助。OpenSSL 必须从源代码构建为静态库。