如何使自定义目标的构建失败停止在CMake中构建依赖目标?

时间:2014-06-10 09:26:14

标签: cmake

我正在使用CMake构建应用程序和插件集合。

ADD_LIBRARY (plugin_X ...)
ADD_LIBRARY (plugin_Y ...)
ADD_LIBRARY (plugin_Z ...)

ADD_CUSTOM_TARGET (all_plugins)
ADD_DEPENDENCIES (all_plugins plugin_X plugin_Y plugin_Z)

ADD_EXECUTABLE (application ...)
ADD_DEPENDENCIES (application all_plugins)

我们的想法是,通过运行make application,也可以构建插件。

如果构建失败,我的构建脚本依赖make返回错误代码,但如果其中一个插件无法构建,make application仍然会成功。

如果application的依赖关系失败,如何使{{1}}的构建失败?

1 个答案:

答案 0 :(得分:0)

在我的包装盒上,它可以正常工作。

<强>的main.c

#include <stdio.h>

int main()
{
        printf("Hello world!");
}

<强>交流转换器

int test(){errorhere}

<强>的CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

ADD_LIBRARY (plugin_X a.c)
ADD_LIBRARY (plugin_Y a.c)
ADD_LIBRARY (plugin_Z a.c)

ADD_CUSTOM_TARGET (all_plugins)
ADD_DEPENDENCIES (all_plugins plugin_X plugin_Y plugin_Z)

ADD_EXECUTABLE (application main.c)
ADD_DEPENDENCIES (application all_plugins)

制作命令

cmake -G "Unix Makefiles" ..
make application; echo $?
a.c:1: error: expected ‘;’ before ‘}’ token
make[3]: *** [CMakeFiles/plugin_X.dir/a.c.o] Error 1
make[2]: *** [CMakeFiles/plugin_X.dir/all] Error 2
make[1]: *** [CMakeFiles/application.dir/rule] Error 2
make: *** [application] Error 2
2