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

tun*_*2fs 4 cmake

我在cmake中定义了一个自定义目标.我现在想确保只在执行cmake目标时构建此目标test.我怎样才能做到这一点.

假设我有一个目标make coverage应该依赖于make test之前要调用的目标,或者make test在执行之前调用.

如何在cmake中定义此行为?

这里我的代码没有按预期工作.我想要实现覆盖取决于必须先调用make test.

    ADD_CUSTOM_TARGET(
        coverage COMMAND /bin/bash ${LIBPIPE_BINARY_DIR}/cmake/scripts/coverage.sh
        DEPENDS test
    )  
Run Code Online (Sandbox Code Playgroud)

DLR*_*ave 7

您无法添加"DEPENDS test"子句.CMake中的预定义/内置目标(all,install,package,test,clean)不能作为CMakeLists.txt文件中的实际目标.因此,您无法表达对内置目标的依赖性.

此功能在CMake错误跟踪器中有一个突出的功能请求,但尚未实现.请参见http://public.kitware.com/Bug/view.php?id=8438

但是,您可以更改自定义目标的命令,以便首先调用"make test",然后运行coverage命令.


Ser*_*lov 3

CMake FAQ指出add_custom_command/add_custom_target定义自定义目标的命令具有 DEPENDS 参数。

编辑

test由于以下功能请求,这不适用于内置目标。

但您始终可以创建自定义目标或CMake 常见问题解答check中建议的任何内容