如何在cmake目标中添加依赖项

如何在cmake目标中添加依赖项,cmake,Cmake,我在cmake中定义了一个自定义目标。现在我想确保只有在执行cmaketargettest时,这个目标才是构建的。我怎样才能做到这一点 假设我有一个目标makecoverage,它应该取决于之前调用的目标maketest,或者在执行之前调用maketest 如何在cmake中定义此行为 这里是我的代码,它没有按预期工作。我想让覆盖率取决于make测试必须在之前调用 ADD_CUSTOM_TARGET( coverage COMMAND /bin/bash ${LIBPIP

我在cmake中定义了一个自定义目标。现在我想确保只有在执行cmaketarget
test
时,这个目标才是构建的。我怎样才能做到这一点

假设我有一个目标
makecoverage
,它应该取决于之前调用的目标
maketest
,或者在执行之前调用
maketest

如何在cmake中定义此行为

这里是我的代码,它没有按预期工作。我想让覆盖率取决于make测试必须在之前调用

    ADD_CUSTOM_TARGET(
        coverage COMMAND /bin/bash ${LIBPIPE_BINARY_DIR}/cmake/scripts/coverage.sh
        DEPENDS test
    )  
说明定义自定义目标的
add_custom_命令/add_custom_目标
命令具有DEPENDS参数

编辑

由于以下原因,这将不适用于内置目标测试

但您始终可以创建自定义目标
检查
或中建议的任何内容。您不能添加“DEPENDS test”子句。CMake中的预定义/内置目标(全部、安装、打包、测试、清理)在CMakeLists.txt文件中不能作为实际目标使用。因此,不能表示对内置目标的依赖关系

CMake bug tracker中有一个关于此功能的未完成功能请求,但尚未实现。看


但是,您可以更改自定义目标的命令,使其先调用“make test”,然后运行覆盖率命令。

我看到了这一点,但不幸的是,它对我不起作用。我已经添加了一些我在上面尝试过的代码。这里有一个类似的主题,它可能对您很有用,比如@DLRdave所写的,您不能用这种方式设置测试的目标依赖项。什么是测试?自定义命令或自定义目标?奇怪。自定义目标总是过期的,所以如果您运行makecoverage,它应该首先运行test。