你好我有一個鏈接到主文件的共享庫libnsd.so(由nsd.c,nsd.h,nd.c,nd.h組成)。 我的問題是如何編寫makefile,以便它僅重新編譯那些已更改的源文件。 我已經閱讀了一些關於這個主題,但有點困惑,我是一個初學者程序員。 我的makefile代碼到目前爲止:C Makefile - 僅重新編譯已更改的文件
CC=gcc
all : lib alll
alll : main.c
$(CC) main.c -o main -L. libnsd.so
lib : nsd.c nsd.h nd.c nd.h
$(CC) -c -fPIC nsd.c -o nsd.o
$(CC) -c -fPIC nd.c -o nd.o
$(CC) -shared -Wl,-soname,libnsd.so -o libnsd.so nsd.o nd.o
clean:
rm main libnsd.so nd.o nsd.o
您需要讓目標與您不想重新編譯的輸出文件具有相同的名稱 –
(也就是說,沒有目標調用命令不會創建與目標名稱相同的文件) –
你有nsd.o,nd.o,libnsd.so,主要作爲個人目標 –