簡體   English   中英

將Makefile設置為在另一個目錄中構建

[英]Set Makefile to build in another directory

可以說我的Makefile與源文件位於同一目錄中,我想將目標文件存儲在obj /子目錄中,將目標可執行文件存儲在bin /子目錄中。

src/
    main.cpp 
    test.cpp
    test.h
    /many other *.cpp files and headers/ 
    Makefile
    obj/
    bin/

我的Makefile的問題在於,我無法使OBJECTS變量包含* .o文件的列表,這些文件的samy名稱為* .cpp文件,但位於OBJDIR子目錄中。

當前,僅當我一一命名所有目標文件時,它才有效。

CXX=g++
CXXFLAGS=-c -Wall 
LDFLAGS=
SOURCES=$(wildcard *.cpp) # very convenient wildcard
BINDIR=bin
OBJDIR=obj
OBJECTS=$(OBJDIR)/main.o $(OBJDIR)/test.o # how do I make a wildcard here?
TARGET=$(BINDIR)/my_executable

all: $(SOURCES) $(TARGET)

$(TARGET): $(OBJECTS)
    $(CXX) $(LDFLAGS) $(OBJECTS) -o $@

$(OBJECTS): $(OBJDIR)/%.o: %.cpp
    $(CXX) $(CXXFLAGS)  -c $< -o $@

clean:
    rm -rf $(OBJDIR)/$(OBJECTS) $(BINDIR)/$(TARGET)

請幫忙謝謝!

此站點上已經存在與您類似的問題:

我可以將src /中的所有.cpp文件編譯為obj /中的.o,然后鏈接到./中的二進制文件嗎?

無論哪種方式都可以解決您的問題:

OBJ_FILES := $(addprefix obj/,$(notdir $(CPP_FILES:.cpp=.o)))

暫無
暫無

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

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