奇怪的是,這個主題的結果都不起作用。
最后,我找到了一個對我來說合乎邏輯的變體,并且按照相同的順序作業。
CC := g
CFLAGS := -g -Wall
objects = test helloworld
all: $(objects)
$(objects): %: %.cpp
$(CC) $(CFLAGS) -o $@ $<
我已經嘗試了很多,可能無法完全理解這條線%: %.cpp。
我的解釋是:我從每個物件中獲取依賴關系,而依賴關系又基于一個檔案,然后可以追溯到一個.cpp檔案。
我的理論是測驗期望test.o然后test.cpp.
如何將其重寫到目錄?
我已經閱讀了一些帶有通配符和模式替換的東西。
喜歡
SRC_DIR := src
OBJ_DIR := obj
SRC_FILES := $(wildcard $(SRC_DIR)/*.cpp)
OBJ_FILES := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES))
LDFLAGS := ...
CPPFLAGS := ...
CXXFLAGS := ...
main.exe: $(OBJ_FILES)
g $(LDFLAGS) -o $@ $^
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
g $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
但行為不是預期的。
當檔案夾中有 2 個 cpp 檔案時,結果是
g -o helloworld.o helloworld.cpp
g -o helloworld.o test.cpp
反之亦然,只有 cpp 檔案始終相同。
我有一種非常想念一些東西的感覺。
更新:制作版本是
GNU Make 4.3
Built for aarch64-unknown-linux-android
我想要達到的目標是
- 源/
- 測驗.cpp
- 你好世界.cpp
- 物件/
制作 :
- 物件/
- Helloworld.out
- 檢驗出
uj5u.com熱心網友回復:
嘗試這個:
CXX := g
CXXFLAGS := -g -Wall
TARGETS=obj/test.out obj/helloworld.out
all:$(TARGETS)
obj/%.out:src/%.cpp
$(CXX) $(CXXFLAGS) -o $@ $^
clean:
rm obj/*

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/486673.html
上一篇:顯示列中的特定1值
