美文网首页
makefile 编写

makefile 编写

作者: rmrfany | 来源:发表于2019-01-13 17:15 被阅读0次

    1. Makefile 中::=,?=, +=, =的区别

    = 是最基本的赋值
    := 是覆盖之前的值
    ?= 是如果没有被赋值过就赋予等号后面的值
    += 是添加等号后面的值

    =
    make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值
    x = foo
    y = $(x) bar
    x = xyz
    y的值将会是 xyz bar ,而不是 foo bar

    :=
    :=表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值
    x := foo
    y := $(x) bar
    x := xyz
    y的值将会是 foo bar ,而不是 xyz bar 了

    一个简单的makefile示例

    CC      := g++
    C_FLAGS := -std=c++17 -Wall -Wextra
    
    BIN     := bin
    SRC     := src
    
    INCLUDE := include
    LIB     := lib
    
    LIBRARIES   :=
    
    ifeq ($(OS),Windows_NT)
    EXECUTABLE  := main.exe
    RM          := del
    else
    EXECUTABLE  := main
    endif
    
    all: $(BIN)/$(EXECUTABLE)
    
    clean:
    ifeq ($(OS),Windows_NT)
        $(RM) $(BIN)\\$(EXECUTABLE)
    else
        $(RM) $(BIN)/$(EXECUTABLE)  
    endif
    
    run: all
        ./$(BIN)/$(EXECUTABLE)
    
    $(BIN)/$(EXECUTABLE):   $(SRC)/*.cpp \
                            $(SRC)/tools/*.cpp
        $(CC) $(C_FLAGS) -I$(INCLUDE) -L$(LIB) $^ -o $@ $(LIBRARIES)
    

    相关文章

      网友评论

          本文标题:makefile 编写

          本文链接:https://www.haomeiwen.com/subject/ntrldqtx.html