簡體   English   中英

通用Makefile忽略變量

[英]Generic Makefile disregarding variables

C ++項目具有目錄結構,並且在此博客中介紹了簡單的c plus plus項目結構具有 Makefile樣式。 但是,在運行makefile的修改后的輸出中,變量似乎沒有在編譯過程中攜帶值。

編輯(正在運行):Makefile

HOST_COMPILER := g++
SRCDIR := src
BUILDDIR := build
TARGET := bin/runner
SRCEXT := cc
SOURCES := $(shell find $(SRCDIR) -type f -name "*.$(SRCEXT)")
OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o))

# internal flags
CXXFLAGS := -std=c++11 -Wall -g -fopenmp 
MAGICKFLAGS := `Magick++-config --cxxflags --cppflags --ldflags --libs`

INCLUDES := -I/usr/include/ImageMagick-6 
LIBRARIES := -L/usr/local/lib/  -lMagick++-6.Q16 -lMagick++

$(TARGET) : $(OBJECTS)
    $(HOST_COMPILER) $^ -o $(TARGET) $(LIBRARIES)

$(BUILDDIR)/%.o : $(SRCDIR)/%.$(SRCEXT)
    @mkdir -p $(BUILDDIR)
    $(HOST_COMPILER) $(CXXFLAGS) $(MAGICKFLAGS) $(INCLUDES) -c -o $@ $<

clean:
    rm -r $(BUILDDIR) $(TARGET)

回想起來,“ $(”是該代碼中的一對常見符號,可能會因產生“($”的錯誤而被反轉,除了makefile不會通知您這種錯誤類型。因此,只需在文檔中搜索“(( $”會發現錯誤。

您的makefile中有一個小問題! 替換為:

OBJECTS := $(patsubst ($SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o))

有了這個:

OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM