[英]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.