#%* 將 .old\_suffix 的檔案變成 .new\_suffix 的檔案*) #%* 符號法則 1*) .<old_suffix>.<new_suffix>: #%* 符號法則 2*) %.<old\_suffix>: %.<new_suffix>:
.SUFFIXES: .cpp .cpp.o: $(CC) -xc++ $(CFLAGS) -I$(INCLUDE) -c $< #%* gcc 的 -xc++ 旗標告訴編譯器,它是一個 C++ 原始碼檔案。*) #%* 變數 \$< 代表目前的相依性項目,會被展開成為原本的檔案名稱(含舊的檔尾)。*)
%.o: %.cpp $(CC) -xc++ $(CFLAGS) -I$(INCLUDE) -c $<
[dywang@dywOffice ~]$ make -p | vi -
OUTPUT_OPTION = -o $@
CXX = g++ ###(gcc)
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.C = $(COMPILE.cc)
COMPILE.cpp = $(COMPILE.cc)
%.o: %.c
# commands to execute (built-in):
$(COMPILE.cc) $(OUTPUT_OPTION) $<
#include <stdlib.h>
#include <stdio.h>
int main()
{
printf("Hello World\n");
exit(EXIT_SUCCESS);
}
$ make foo cc foo.c -o foo $
$ rm foo $ make CC=gcc CFLAGS="-Wall -g" foo gcc -Wall -g foo.c -o foo $
main.o: main.c a.h # $(CC) -I$(INCLUDE) $(CFLAGS) -c main.c 2.o: 2.c a.h b.h # $(CC) -I$(INCLUDE) $(CFLAGS) -c 2.c 3.o: 3.c b.h c.h # $(CC) -I$(INCLUDE) $(CFLAGS) -c 3.c #%* 註解部分為原 Makefile3 之編譯法則*)
.cpp.o: 及 %.o: %.cpp
$(CC) -xc++ -c $<,其中 -xc++ 代表意義為何?
$(CC) -xc++ -c $<,其中 $< 代表意義為何?
$< 代表目前的相依性項目,會被展開成為原本的檔案名稱(含舊的檔尾)。
2017-06-14