【发布时间】:2012-04-05 07:39:39
【问题描述】:
我正在编写一个小的 C 程序来娱乐。我决定只使用 MinGW(仅 C)、make 和 Notepad++ 作为不使用花哨的 IDE 进行更改的练习。到目前为止一切都很好,很有趣。
(MinGW == 我在 Windows 上工作。)
现在,由于该程序是针对 vanilla C 编译的,所以我想使其完全可移植。 MinGW make 和 gcc 足够聪明,根据规则创建程序:
myprog: myprog.o other.o
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@
显然,由于我在 Windows 上,编译器会创建 myprog.exe。这非常聪明,并且使整个东西非常便携。
就standard targets 而言,我想至少实现clean,因为我实际上使用了该规则。现在,在 Windows 上实际运行的干净目标如下所示:
clean:
rm myprog.exe *.o
这条规则在 POSIX 环境中肯定行不通,因为那里的程序没有扩展。 (PSOIX:想想 GNU/Linux)
有没有一种便携的方式来实现一个干净而又不费吹灰之力?
到目前为止,我还没有找到任何关于这个问题的真正有用的文档。如果你看一下 autoconf 和 automake 如何解决这个问题,他们会介绍@EXEEXT@ 模式。但这依赖于测试环境的冗长配置代码。
【问题讨论】:
-
rm -f myprog myprog.exe *.o有什么问题? -
曾经试过在 Linux 上执行它吗?不起作用...问题是指可饮用性;该规则在 mingw 上运行良好。
-
是的,我有,它适用于我的版本 (2.6.18-194.8.1.el5)。你的错误是什么? (你为什么要喝它?)
-
除了当我生成
myprog,然后尝试删除myprog.exe会得到一个不错的No such file or directory.