Makefile:忽略模式规则

时间:2013-12-10 10:29:43

标签: c++ makefile

我有一个需要头文件的C ++项目。我使用某些文件(.srv)中的python脚本构建了一些头文件。如果标头丢失或srv文件已更改,我希望我的Makefile运行我的脚本。 我将这一行添加到我的makefile中:

    include/services/%.h : include/srv/%.srv
        python headersFromSRV.py $<

当我尝试构建项目时,我收到错误消息:

 fatal error: 'include/services/robot_device_list.h' file not found
 #include "include/services/robot_device_list.h"

这是逻辑,因为该文件尚不存在,但它不会调用规则来创建它。 我的规则有什么问题?

1 个答案:

答案 0 :(得分:0)

规则本身是可以的,但也许你的问题是makefile不知道它是一个要求。 我想错误消息来自你的C / C ++编译器,他正在构建一些其他目标。您可能需要将robot_device_list.h添加为该目标的依赖项,因此makefile知道他需要先构建该目标。 例如

foo.exe: foo.o
   (your link statement)

foo.o: foo.c include/services/robot_device_list.h
   (your compile statement)