如何为cmake中ExternalProject_Add的配置步骤添加对文件的依赖

问题描述 投票:0回答:1

我正在尝试将一个不使用 cmake 的外部项目添加到我的确实使用 cmake 的项目中:

include(ExternalProject)

ExternalProject_Add( MatrixSSL
  SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/matrixssl
  PREFIX ${CMAKE_CURRENT_BINARY_DIR}/matrixssl
  CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/configure_matrixssl.sh
  BUILD_COMMAND echo "Built!"
  INSTALL_COMMAND echo "Installing!"
)

这里的脚本

${CMAKE_CURRENT_SOURCE_DIR}/configure_matrixssl.sh
就可以了 配置该外部项目所需的任何内容(也称为生成 Makefile)。

我的问题是,当我编辑

configure_matrixssl.sh
并重新运行“make”时,然后 配置步骤重复。因此我想添加一个依赖项 我的脚本中的“配置步骤”;当我的脚本的修改时间较新时 超过配置时间戳文件的修改时间,应该重做 配置步骤。

我试过了,

ExternalProject_Add_Step( MatrixSSL configure
  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/configure_matrixssl.sh
)

但这没有任何效果。

然后我尝试了,

ExternalProject_Add_Step( MatrixSSL configure
  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/configure_matrixssl.sh   
  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/configure_matrixssl.sh
)

但这给了我错误

CMake 错误:尝试添加自定义规则以输出“/home/carlo/projects/aicxx/ai-evio-testsuite/ai-evio-testsuite-objdir/evio/matrixssl/src/MatrixSSL-stamp/MatrixSSL-configure。规则”,已经有一个自定义规则。

CONFIGURE_COMMAND
中删除
ExternalProject_Add
没有效果。

我该怎么做?

cmake
1个回答
0
投票

虽然

ExternalProject_Add_StepDependencies
确实允许文件路径,但正确的方法是添加依赖于所有感兴趣文件的中间自定义目标。

© www.soinside.com 2019 - 2024. All rights reserved.