CMake外部目标:在自定义命令中引用源目录

时间:2019-04-14 13:21:18

标签: cmake

在我的CMake项目中,我使用了一个名为ep_glslang的外部项目,该项目非常简单:

ExternalProject_Add(ep_glslang
  DEPENDS ep_vulkan_headers
  URL https://github.com/KhronosGroup/glslang/archive/7.11.3113.tar.gz
  CMAKE_ARGS  -DCMAKE_INSTALL_PREFIX=${_PREFIX}
              -DVULKAN_HEADERS_INSTALL_DIR=${_PREFIX}
)

但是,在执行配置步骤之前,我需要运行位于glslang的源目录的根中的Python。

我为外部项目创建了一个自定义步骤:

ExternalProject_Add_Step(ep_glslang update_glslang_sources
  DEPENDEES update
  DEPENDERS configure
  COMMAND ${PYTHON_EXECUTABLE} update_glslang_sources.py
  CMAKE_ARGS  -DCMAKE_INSTALL_PREFIX=${_PREFIX}
)

这似乎是一种惯用的方式。然而,该步骤因找不到python脚本而失败。

我如何获取外部项目的源目录,以进行如下操作:

...
COMMAND ${PYTHON_EXECUTABLE} ${EP_SRC_DIR}/update_glslang_sources.py
...

即使在生成器表达式中,我也找不到任何可以帮助我的东西。

谢谢:)

1 个答案:

答案 0 :(得分:0)

Tsyvarev的解决方案:

要引用ExternalProject_Add中的源目录,请使用<SOURCE_DIR>表达式:COMMAND ${PYTHON_EXECUTABLE} <SOURCE_DIR>/update_glslang_sources.py