GitHub存储库仅包含带有无 hpp
文件的CMakeList.txt
个文件。
我需要在项目中包含这些头文件。我不想手动克隆它们然后链接它们。我希望每次调用cmake
命令时,cmake都会克隆它们并将它们放在一些内部文件夹中。
有可能吗?如果是的话,我怎么能做到这一点?
答案 0 :(得分:2)
您可能需要考虑DownloadProject github项目中使用的方法,其中包含一个为GoogleTest仓库执行下载步骤的示例。它在配置阶段而不是构建阶段调用CMake的ExternalProject
模块,因此外部源在配置时可用,这似乎也是你想要的。在您的情况下,您不需要使用add_subdirectory()
将外部项目中的任何内容提取到主构建中的后续步骤,因此只需下载就足够了。这种方法也由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
源中完全一般的实现,了解其工作原理。您可以简单地将其嵌入到您自己的项目源中,并重新使用它来有效地处理下载您可能需要的任何外部依赖项。
答案 1 :(得分:1)
我设法做到了这样:
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/external_includes)
execute_process(
COMMAND git clone "xxxxx.git" lib_name
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/external_includes)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/external_includes)
这种方法在Windows上使用MSVS& Ubuntu和GCC。
当然,使用像Hunter或任何包裹管理器这样的东西是可取的,但有时需要快速简便的解决方案。