Makefile - 两个不同的目标
我正在为一个应用程序制作一个 Makefile,它可以通过两种不同的方式构建。其中一个(我们可以称之为基本输出),有一个输出叫做a.out1。第二个输出是通过显式传递参数来生成的 - 例如“make a.out2”并启用一些功能,这些功能由源中的预处理器打开。 因此,目标文件与 a.out1 中的目标文件不同。在构建 a.out2 时,是否有一个选项可以在 Makefile 中指定,以明确表示如果 a.out1 已经构建,则使用目标文件清除它并构建 a.out1 (和依赖的 objs)? (当然反之亦然) 谢谢
I am making a Makefile for an application, which can be build in two different ways. One (we can call it basic output), there is an output called a.out1. Second output is made by explicitly passing argument to make - e.g. `make a.out2' and enables some features, which are turned on by preprocessor in sources.
Thus object files are different than object files from a.out1. Is there an option to specify in Makefile when building a.out2, to explicitly say that if a.out1 is already build, clear it with object files and build a.out1 (and depended objs)? (and of course vice versa)
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您不介意有单独的目标文件(例如
objA1.o
和objA2.o
),那么可以采用以下方法:如果两个可执行文件(
>a.out
和a.out2
)需要不同的对象文件,您可以这样做:如果两个构建命令(以两种不同方式构建对象)之间的差异是一些简单的事情,比如改变编译器参数,你可以使最后两条规则稍微简单一点:
同样,如果链接命令除了链接器参数之外相同(或完全相同):
If you don't mind having separate object files (e.g.
objA1.o
andobjA2.o
), then here's a way to do it:If the two executables (
a.out
anda.out2
) need different object files, you can do this:If the difference between the two build commands (for building the objects in the two different ways) is something simple, like changing a compiler argument, you can make the last two rules a little simpler:
Likewise if the linking command is the same except for a linker argument (or exactly the same):
这个怎么样?
How about this?