问题标签 [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.
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 版本并将其传递给外部项目构建,我做错了什么?
c++ - CMake:构建和安装本地存储的子模块
Stack Overflow 上有很多类似的问题,但没有一个可以回答我的问题。
我有一个使用 CMake 构建的 C++ 库:
然后我创建另一个包含上述库的库或可执行文件:
并想像这样使用mylib
inside myapp
。请注意mylib
标题如何包含在类似格式的目录中:
mylib
应在构建时构建myapp
,以便以下工作无需任何其他构建步骤:
这是我查看过的一些 Stack Overflow 帖子的列表。我已经尝试过每一个,但它们根本不起作用:
xcode - CMake:如何使用 *nix 系统上的所有内核构建外部项目?
我正在开发一个基于 CMake 的项目,该项目依赖于也使用 CMake 的巨大第三方代码库。我通过 ExternalProject_Add 机制包括第三方项目。该项目默认使用 Makefiles,尽管父项目是 Xcode 项目。
生成的外部项目非常缓慢,因为它只使用一个内核。我不认为我可以强制项目生成 Xcode 项目而不是 Makefile。
假设我坚持使用 Makefile,我如何通知 ExternalProject_Add 使用可用于泰坦尼克号第三方项目的所有内核?
请注意,添加不可避免的“-j N”选项(为什么默认情况下不使用“make”?)需要有条件地出现在 Mac 和 Linux 版本中,而不是 Windows/Visual Studio。
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 效果很好。
那里可能出了什么问题?
c++ - CMake ExternalProject 依赖冲突
我正在将现有的 C++ 构建系统迁移到 CMake,并且我对外部项目依赖项有疑问。
场景是我们有两个项目 A 和 B。
项目 A 使用以下命令将 googletest 作为外部项目引入:
请注意,项目 A 取决于release-1.8.1
googletest。
现在,项目 B 使用相同的命令拉入 googletest,但依赖于release-1.7.0
(不同于项目 A 的依赖项)并且项目 B 也将项目 A 作为另一个外部项目拉入。
当我们在项目 B 上运行 cmake 时,这是否会在 googletest 版本之间产生某种冲突?
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 的配置输出:
c++ - 将使用 ExternalProject_Add 构建的库链接到使用 CMAKE_CXX_COMPILER 配置的项目时出错
我的 CMake 项目使用我使用ExternalProject模块添加的gtest库。这通常有效,但是当我将项目配置为使用Clang 3.8工具链时,例如:
我在Ubuntu 16.04下收到以下链接器错误:
问题似乎是gtest是使用系统范围的编译器GCC 5构建的,并且 ignores CMAKE_CXX_COMPILER
。确保所有依赖项都使用相同的工具链构建的正确方法是什么?
cmake - CMake:在 ExternalProject_Add 中下载并解压多个文件
我想使用 CMake 的 ExternalProject 功能在 Windows 上自动编译 OpenSSL。在配置中,我可以指定一个下载 URL。但是我需要多个附加文件,我希望将它们解压缩到同一个源目录中。所以这是意图:
这似乎是不可能的。指定多个 URL 条目会导致以下错误消息:
有没有办法在 CMake 中做到这一点?
cmake - 如何使用 HTTPS URL 请求 GIT_REPOSITORY 的密码
git 命令理解的 URL 可以是 HTTPS 或 SSH 格式。
在 CMake 中,可以使用 git 命令理解的任何 URLExternalProject_Add
来指定指定的URL。GIT_REPOSITORY
必须提供使用 HTTPS 用户凭据才能“克隆”私有存储库。因为ExternalProject_Add
,这种机制在使用时HTTP_USERNAME
以形式存在。HTTP_PASSWORD
DOWNLOAD_COMMAND
因为GIT_REPOSITORY
似乎没有这样的方法。使用时:
在私有存储库上给出以下错误:
问题
GIT_REPOSITORY
使用 HTTPS 连接到私有存储库时,如何让 CMake 请求密码ExternalProject_Add
?
cmake - CMake ExternalProject_Add 每次都会重建
我将 OpenSSL 作为我的 CMake 项目的一部分。由于它没有自己的 CMake 文件,因此我将其构建为 ExternalProject。不幸的是,每次我重建我的项目时,ExternalProject 也会重建,它是迄今为止最大和最慢的部分。
如何避免每次都在重建 ExternalProject?
我试过 BUILD_ALWAYS = false 但没有帮助。OpenSSL 必须从源代码构建为静态库。