2020年9月3日 星期四

Makefile 筆記 (2)

Makefile 範本 (OS: Linux)

    這個 Makefile 有結合 .c 跟 .cpp 檔案, 並且使用一些字串處理 function。
    # gcc compiler 參數
    CC      := gcc
    CFLAGS  := -g -Wall -Werror -std=c99
    # g++ compiler 參數
    CXX     := g++
    CXXFLAG := -Wall -Werror -std=c++17


    # 宣告 source 資料夾
    SRC_DIRS = ./source
    # 把 source 資料夾裡的 cpp 跟 c 全部找出來
    SRCS := $(shell find $(SRC_DIRS) -name "*.cpp" -or -name "*.c")
    # 取檔名並把副檔名加上 .o
    OBJS := $(addsuffix .o,$(notdir $(SRCS))) main.o

    # include 參數 (適用於多個 include 資料夾, 成果會是 gcc -I/dir1 I/dir2)
    INC_DIRS  := ./include 
    INC_FLAGS := $(addprefix -I,$(INC_DIRS))

    all: program

    program: $(OBJS)
        $(CXX) $(CXXFLAG) $(OBJS) -o $@ 

    main.o: main.cpp
        $(CXX) $(INC_FLAGS) $(CXXFLAG) -c $< -o $@

    # .cpp.o 找 .cpp 編譯
    %.cpp.o: $(SRC_DIRS)/%.cpp
        $(CXX) $(INC_FLAGS) $(CXXFLAG) -c $< -o $@

    # .c.o 找 .c 編譯
    %.c.o: $(SRC_DIRS)/%.c
        $(CC)  $(INC_FLAGS) $(CFLAGS) -c $< -o $@

    .PHONY: clean

    clean:
        rm -rf ${OBJS} program
相關文章 :

0 意見:

張貼留言

Popular Posts