[英]How to create Makefile to compile a single arbitrary filename in C
我是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 $@ $^
我需要做些什么來使它工作?
將評論轉換為答案。
你不需要makefile
: make sample2
將編譯sample2.c
來創建程序sample2
。
如果需要,可以使用/dev/null
作為makefile
的名稱(或者如果需要忽略現有的makefile
):
make -f /dev/null sample2
當然,這會使用默認選項進行編譯。 如果你想使用更嚴格的標志,那么你可以這樣做(假設現有的makefile
是可消耗的):
echo 'CFLAGS = -Wall -Wextra -Werror -std=c11 -O3 -g' > makefile
make sample2
或該主題的一些變體,例如:
make -f /dev/null CFLAGS="-Wall -Wextra -Werror -std=c11 -O3 -g" sample2
簡而言之, make
知道如何將單個C文件編譯成相應名稱的可執行文件(減去.c
后綴),而不需要任何顯式的makefile
。 如果需要,您可以調整它如何編譯該文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.