从外部项目中获取变量和选项

时间:2015-09-02 01:53:57

标签: cmake

我想知道如何从外部项目中获取变量和选项。例如,我正在使用ExternalProject_Add添加我的项目依赖的库,问题是这个依赖项有一些变量和选项 - 默认情况下它们中的一些是 - 我想知道,如何获取他们来自我的CMakeLists.txt

2 个答案:

答案 0 :(得分:1)

ExternalProject_Add相关的所有命令都在 build 阶段执行,但是当{em> configure 阶段解释您的CMakeLists.txt时,外部库没有&# 39; t尚未配置,因此未定义其变量和选项。

更一般地说,可以在两种情况下提取外部项目中的cmake变量:

  1. 外部项目通过add_subdirectory包含在主项目中。
  2. 外部项目提供打包文件,用于定义所需的变量。在这种情况下,外部项目应在主项目的配置阶段之前或之后安装。您可以在CMake tutorial
  3. 中阅读有关包装的信息

答案 1 :(得分:0)

我解析回答一个类似的问题。

这项工作对我来说:

  set(ZIP_DEP ${CMAKE_BINARY_DIR}/httpserver.zip)
  if(NOT EXISTS ${ZIP_DEP})
    file(DOWNLOAD https://github.com/d3roch4/httpserver/archive/master.zip 
  ${ZIP_DEP})
    execute_process(COMMAND unzip -o ${ZIP_DEP}
                  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
                  RESULT_VARIABLE rv
    )
    if(NOT rv EQUAL 0)
      message(FATAL_ERROR "error: extract of '${ZIP_DEP}' failed")
    endif()
  endif()
  add_subdirectory(${CMAKE_BINARY_DIR}/httpserver-master)