是否有使用GNU的方法将目录中的所有C文件编译为单独的程序,每个程序都被命名为源文件,但没有.c扩展名?将目录中的所有C文件编译为单独的程序
25
A
回答
41
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o [email protected] $<
7
我不认为你甚至需要一个makefile - 默认隐make规则应该这样做:
$ ls
src0.c src1.c src2.c src3.c
$ make `basename -s .c *`
cc src0.c -o src0
cc src1.c -o src1
cc src2.c -o src2
cc src3.c -o src3
编辑来让命令行稍微简单一些。
4
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o [email protected] $<
clean:
rm -f $(PROGS)
通过添加“干净”目标来改善Martin Broadhurst的回答。 “make clean”会清除所有可执行文件。
+0
你应该为'clean'这样的目标使用'.PHONY'。请参阅http://stackoverflow.com/questions/2145590/what-is-the-purpose-of-phony-in-a-makefile。 – 2017-01-13 16:12:43
+0
@MartinBroadhurst你也应该为目标'all'使用'.PHONY'。 – iBug 2017-11-08 05:11:06
相关问题
- 1. Makefile将目录中的所有cpp文件编译为单独的可执行文件
- 2. 如何编译所有子目录中的多文件C++程序?
- 3. 使用CMD中的GCC编译器编译目录中的所有.c文件
- 4. 如何编译给定目录中的所有c文件?
- 5. 如何编译单声道目录中的所有文件?
- 6. 单独排序目录中的所有文件
- 7. 将多个C代码编译为一个单独的程序集文件
- 8. CoffeeScript - 编译当前目录和所有子目录中的所有.coffee文件
- 9. Makefile编译当前目录和所有子目录中的所有.cpp文件
- 10. Java - 可以一次编译目录中的所有文件,但不是单独编译
- 11. C++中的单独编译
- 12. Makefile:自动编译所有c文件,将.o文件保存在单独的文件夹中
- 13. 在单独的文件夹中将EJS模板编译为HTML
- 14. 将所有C#文件编译为一个文件?
- 15. gmake编译目录中的所有文件
- 16. 如何编译目录中的所有cpp文件?
- 17. 重新编译目录中的所有Python文件
- 18. 如何使用Elixir编译目录中的所有SASS文件?
- 19. Node-Sass将单个目录中的多个文件编译为一个文件
- 20. 如何将所有编译文件移出src目录
- 21. 如何将python文件编译到单独的文件夹中?
- 22. 如何将所有cshtml文件编译为vNext中的DLL或.net程序集?
- 23. TypeScript将所有ts文件作为WebStorm中的单个JavaScript文件编译7
- 24. 如何使用find编译所有子目录中的所有文件?
- 25. 将目录中的所有* .mat文件转换为* .txt文件?
- 26. 如何将cs文件编译为单独的dll
- 27. 将多个目录中的多个SASS文件编译为单独的单个目录中的多个CSS文件
- 28. Google Closure编译器 - 将多个文件编译为单独的缩小版本
- 29. 在递归下编译目录下的所有cpp文件
- 30. 将msbuild中的编译项目移动到单独的文件中?
提醒您最后的间距实际上是一个选项卡。 – 2010-04-24 20:59:15
@马丁精彩!但我不明白你为什么不在主线上调用PROGS和SRCS。 – 2015-02-06 18:12:25
@ user4050,对不起,我错过了你的问题。默认的'all'目标构建'$(PROGS)',主线表示如何从'%.c'文件构建没有扩展名的文件,这就是'$(PROGS)'的文件, $(SRCS)'是。 – 2015-12-23 10:55:35