c++ - 使用 cmake 从 github 中包含外部头文件库

标签 c++ git cmake

有一个 GitHub 存储库,其中仅包含 hpp 文件,没有 CMakeList.txt 文件。

我需要在我的项目中包含这些头文件。我不想手动克隆它们然后链接到它们。我希望每次调用 cmake 命令时,cmake 都会克隆它们并将它们放在某个内部文件夹中。

这可能吗?如果是,我该如何实现?

最佳答案

您可能需要考虑 DownloadProject 中使用的方法github 项目,其中包含一个为 GoogleTest 存储库执行下载步骤的示例。它在配置阶段而不是构建阶段调用 CMake 的 ExternalProject 模块,因此外部源在配置时可用,这似乎也是您想要的。在您的情况下,您不需要使用 add_subdirectory() 将任何内容从外部项目 pull 入主构建的后续步骤,因此只需下载就足够了。 this answer 也引用了这种方法.

使用 DownloadProject 看起来像这样(取自作为 github 项目的一部分提供的示例):

include(DownloadProject.cmake)
download_project(PROJ           googletest
                 GIT_REPOSITORY https://github.com/google/googletest.git
                 GIT_TAG        master
)

然后,下载的源代码将在变量 ${googletest_SOURCE_DIR} 中存储的目录下可用。请参阅 DownloadProject 源代码中的完整通用实现,了解其工作原理。您可以简单地将它嵌入到您自己项目的源代码中,并重新使用它来有效地处理您可能需要的任何外部依赖项的下载。

关于c++ - 使用 cmake 从 github 中包含外部头文件库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44318262/

相关文章:

javascript - merge 时仅忽略某些文件扩展名的空格

Git 列出分支 merge 到一个分支但不 merge 到另一个分支

cmake - CMakeLists.txt 可以依赖于函数解析的文件吗?

c - 将相互依赖的静态 C 和 Fortran 库与 CMake 链接起来?

c++ - Qt4 Designer 使用 QTableWidget 创建对话框

c# - C++ API 自动转换为 C#?

C++多个文件以通用名称开头

java - Eclipse 给出 'undefined' Java 函数的错误,它可以很容易地找到

CMake 找不到自定义模块

c++ - 仅在非静态时构造