所有 .cpp 文件都依赖于两个 .h 文件?

发布于 2024-07-11 02:50:47 字数 342 浏览 8 评论 0原文

在 makefile 中,我有以下行:

helper.cpp: dtds.h

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

*.cpp: h1.h h2.h

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

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

In a makefile, I have the following line:

helper.cpp: dtds.h

Which ensures that helper.cpp is rebuilt whenever dtds.h is changed. However, I want ALL files in the project to be rebuilt if either of two other header files change, kind like this:

*.cpp: h1.h h2.h

Obviously that won't work, but I don't know the right way to get nmake to do what I want. Can someone help? I don't want to have to manually specify that each individual file depends on h1.h and h2.h.

Thanks. (I'm using nmake included with visual studio 2005.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

离笑几人歌 2024-07-18 02:50:47

谢谢你的帮助,克里斯托夫。 我尝试过:

.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

Thanks for your help, Christoph. I tried:

.cpp.obj: h1.h h2.h

And got the helpful error message:

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

I ended up solving it by making a list of the files that I wanted to compile, and then adding the dependency to the whole list.

files = file1.obj file2.obj file3.obj
$(files): h1.h h2.h
浪漫人生路 2024-07-18 02:50:47

尝试

%.cpp : h1.h h2.h

在 GNU make 中工作 - 不知道 nmake 是否兼容...

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

helper.o : dtds.h

%.o :  h1.h h2.h

毕竟,你不想重新制作 .cpp< /code> 文件(如何制作源文件?),但重新编译...

编辑2:检查NMAKE 参考。 根据this,类似的东西

.cpp.obj: h1.h h2.h

可能会起作用。 ..

Try

%.cpp : h1.h h2.h

That works in GNU make - no idea if nmake is compatible...

Edit: And btw: shouldn't that be

helper.o : dtds.h

%.o :  h1.h h2.h

After all, you don't want to remake the .cpp file (how do you make a source file?), but recompile...

Edit2: Check the NMAKE Reference. According to this, something like

.cpp.obj: h1.h h2.h

might work...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文