3
我对C编程非常陌生,我想知道在Makefile中编写什么来编译单个.c文件。如何创建Makefile以编译C中的单个任意文件名
说我有一个多.c
文件一个文件夹中),即sample1.c
,sample2.c
,sample3.c
等),我只是想编一个特定的文件名。 我只想输入“make sample2
”,它会编译并产生一个名为sample2
的输出(几乎会保留.c
的名称)。
我读过几种解决方案,有人可能会提出这个建议,但没有成功。
SRC = $(shell find . -type f -name \*.c)
executable: $(SRC:.c=.o)
gcc -std=gnu99 [email protected] $^
我需要做些什么才能使它工作?
'find'命令说要从计算机上所有硬盘的根节点开始。这是因为它使用了“非相对”路径I.E. '\ *。c'将在根目录中查找每个* .c文件。建议将该行改为:'SRC = $(shell find。-type f -name。\ *。c)'然而,'make'工具(对于gnu)有这样的命令:'SRC:= $(通配符*。 c)'会在当前目录中找到所有'c'文件。 – user3629249
如果是我,我会在编译时启用警告。 I.E.至少使用:' gcc -std = gnu99 -Wall -Wextra -pedantic -Wconversion $ @ $^-I.' ...然后是任何库路径,然后是代码所需的任何库。 –
user3629249
你不需要'makefile':'make sample2'会编译'sample2.c'来创建'sample2'程序。如果您想要:'make -f/dev/null sample2',您可以使用'/ dev/null'作为名称。等等,当然,它会与默认选项一起编译。如果你想使用更严格的标志,那么你可能会'echo'CFLAGS = -Wall -Wextra -Werror -std = c11 -O3 -g'> makefile'然后'make sample2'。 –