【问题标题】:All .cpp files depend on two .h files?所有 .cpp 文件都依赖于两个 .h 文件?
【发布时间】:2009-01-07 00:22:26
【问题描述】:

在 makefile 中,我有以下行:

helper.cpp: dtds.h

这样可以确保在 dtds.h 更改时重新构建 helper.cpp。但是,如果其他两个头文件中的任何一个发生更改,我希望重建项目中的所有文件,如下所示:

*.cpp: h1.h h2.h

显然这行不通,但我不知道让 nmake 做我想做的事情的正确方法。有人可以帮忙吗?我不想手动指定每个单独的文件都依赖于 h1.h 和 h2.h。

谢谢。 (我使用的是 Visual Studio 2005 中包含的 nmake。)

【问题讨论】:

    标签: makefile nmake


    【解决方案1】:

    试试

    %.cpp : h1.h h2.h
    

    这适用于 GNU make - 不知道 nmake 是否兼容...

    编辑:顺便说一句:不应该这样

    helper.o : dtds.h
    
    %.o :  h1.h h2.h
    

    毕竟你不想重新制作.cpp文件(你如何制作源文件?),而是重新编译...

    Edit2:检查NMAKE Reference。根据this,类似

    .cpp.obj: h1.h h2.h
    

    可能有用...

    【讨论】:

    • 不幸的是, %.o 在 nmake 中似乎不起作用。由于某种原因,“helper.cpp: dtds.h”和“helper.obj: dtds.h”都可以正常工作。
    【解决方案2】:

    感谢您的帮助,克里斯托夫。我试过了:

    .cpp.obj: h1.h h2.h
    

    并收到有用的错误消息:

    makefile(58) : fatal error U1086: inference rule cannot have dependents
    

    我最终解决了这个问题,列出了我想要编译的文件,然后将依赖项添加到整个列表中。

    files = file1.obj file2.obj file3.obj
    $(files): h1.h h2.h
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      相关资源
      最近更新 更多