我正在编写一个小的 C 程序来取乐。我决定只使用 MinGW(仅 C)、make 和 Notepad++ 作为不使用花哨的 IDE 进行更改的练习。到目前为止,一切都很好,很有趣。
(MinGW == 我在 Windows 上工作。)
现在,由于该程序是针对 vanilla CI 编译的,因此想到了使其完全可移植。MinGW make 和 gcc 足够聪明,可以根据规则创建程序:
myprog: myprog.o other.o
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@
显然,由于我在 Windows 上,编译器会创建myprog.exe
. 这非常聪明,并且使整个东西非常便携。
就标准目标而言,我至少想实施clean
,因为我实际上使用了该规则。现在,在 Windows 上实际运行的干净目标如下所示:
clean:
rm myprog.exe *.o
这条规则在 POSIX 环境中肯定行不通,因为程序在那里没有扩展。(PSOIX:想想 GNU/Linux)
有没有一种便携式的方式来实现清洁而不需要太多的麻烦?
到目前为止,我还没有找到任何关于这个问题的真正有用的文档。如果您查看 autoconf 和 automake 是如何解决这个问题的,它们会介绍该模式@EXEEXT@
。但这依赖于测试环境的冗长配置代码。