【问题标题】:CMake ExternalProject_Add GitCMake ExternalProject_Add Git
【发布时间】:2015-02-03 19:22:55
【问题描述】:

我的桌面上有一个 git-bare-repository,我想用 CMake 克隆它。我的存储库有这个路径C:\Users\demoUser\Desktop\learnGIT\prog。我的 CMakeLists.txt 看起来像这样:

cmake_minimum_required(VERSION 2.8)
project(Demo)
include(ExternalProject)

ExternalProject_Add(demo
  GIT_REPOSITORY C:/Users/demoUser/Desktop/learnGIT/prog
  GIT_TAG master
  UPDATE_COMMAND ""
  INSTALL_COMMAND ""
)

但在生成的文件夹中prog-build 只是浪费。生成的文件夹结构不包括我在存储库中的任何文件。

有人有想法吗?

【问题讨论】:

  • 请发布 cmake/make/VS 给你的任何错误信息。您使用的是哪个确切的 cmake 版本?它在我的 ubuntu14 上的 cmake 3.1 上运行良好,我完全使用你的代码(但我的裸仓库和分支)。

标签: git cmake external-project


【解决方案1】:
  1. 您的项目中必须有一个依赖于外部项目的目标

    add_dependencies(TargetName ExternalProjectName)
    
  2. git clone 发生在 TargetName build(不在 CMake 重新加载时)

【讨论】:

    【解决方案2】:

    你必须告诉 cmake 它需要“演示”来构建你的目标。 这样你就强制cmake在编译之前下载外部项目“demo”。

    例如

    set(SRC ${PROJECT_SOURCE_DIR}/src/main.cpp 
        ${PROJECT_SOURCE_DIR}/src/file1.cpp)  
        add_executable(Demobin ${SRC})  
        add_dependencies(Demobin demo)
    

    【讨论】:

      【解决方案3】:

      您将在此ANSWER 中找到一个完整的示例。


      当您(通过 git)添加外部项目时,在开始构建项目的主要部分之前获取(并构建)这些依赖项目有时很重要。

      您可以通过将选项 STEP_TARGETS build 添加到您的 ExternalProject_Add 部分来实现此目的。 见ANSWER

      【讨论】:

        猜你喜欢
        • 2013-07-01
        • 2011-11-18
        • 2015-09-22
        • 1970-01-01
        • 1970-01-01
        • 2014-10-21
        • 2011-09-15
        • 2016-10-21
        • 2018-12-20
        相关资源
        最近更新 更多