拆分隐式 GNU make 规则

发布于 2024-10-31 16:53:46 字数 495 浏览 2 评论 0原文

我有以下隐式规则:

CFLAGS=-I../tcp/ -I../libip_udp/ -g -Wall                                        
LDLIBS=framework.o ../tcp/libtcp.a ../libip_udp/libip.a                          

%.run : %.c $(LDLIBS)                                                            
        $(CC) $< $(LDLIBS) -o $@ $(CFLAGS)                                       
        ./$@

如果我运行 make foo.run 它将编译 foo.c 并执行 foo.run。但是,第二次运行 make foo.run 不会执行任何操作。如何拆分隐式规则,使其在需要时进行编译,但始终运行?

I have the following implicit rule:

CFLAGS=-I../tcp/ -I../libip_udp/ -g -Wall                                        
LDLIBS=framework.o ../tcp/libtcp.a ../libip_udp/libip.a                          

%.run : %.c $(LDLIBS)                                                            
        $(CC) 
lt; $(LDLIBS) -o $@ $(CFLAGS)                                       
        ./$@

If I run make foo.run it will compile foo.c and execute foo.run. However, running make foo.run a second time will not do anything. How can I split the implicit rule such that it compiles when needed, but runs always?

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

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

发布评论

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

评论(1

苹果你个爱泡泡 2024-11-07 16:53:46

例如:

CFLAGS=-I../tcp/ -I../libip_udp/ -g -Wall
LDLIBS=framework.o ../tcp/libtcp.a ../libip_udp/libip.a

.SECONDARY:

%.run : %.c $(LDLIBS)
        $(CC) 
lt; $(LDLIBS) -o $@ $(CFLAGS)

exec.%: %
        ./
lt;

现在运行它

make exec.foo.run

For example:

CFLAGS=-I../tcp/ -I../libip_udp/ -g -Wall
LDLIBS=framework.o ../tcp/libtcp.a ../libip_udp/libip.a

.SECONDARY:

%.run : %.c $(LDLIBS)
        $(CC) 
lt; $(LDLIBS) -o $@ $(CFLAGS)

exec.%: %
        ./
lt;

Now just run it

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