我已經創建了一個Makefile,我將會改變這種情況,當我運行make
時它會生成多個目標。爲多個目標創建一個makefile
在我的節目我用自己的預定義宏(如TIME
,REG
和_DEBUG
),我想有我的Makefile我這樣,它會產生一個目標使用了預定義的宏,一個與REG
和另一個REG
和TIME
。
我希望我希望從Makefile中獲得一個合理的希望,如果沒有的話,請讓我知道。
PS:
建議將樂意除外
我使用 這裏是我的Makefile:
CXX = g++
SOURCES = random.cpp
OBJECTS = $(SOURCES:.cpp=.o)
EXECUTABLE = random-64bit
DEBUG = -g -p -ggdb
CXXFLAGS = -Wall -ansi -pedantic -W -pipe -O3 -std=gnu++0x -march=native \
--fast-math -ftree-vectorize -ffast-math -D NDEBUG \
-D TIME -D REG -D _DEBUG
#CXXFLAGS+=$(DEBUG)
DEPS = def_type.hpp \
ls_regression.hpp \
network.hpp \
statistics.hpp \
knot.hpp \
nachbarn.hpp \
$(SOURCES:.cpp=.hpp) \
zufallszahlengenerator.hpp
INCLUDES = -I/home/phymihsa/eigen/ -I/home/phymihsa/boost_1_48_0
LIBPATH = -L/usr/local/lib64
LDFLAGS = -lm
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS) $(DEPS)
$(CXX) $(LIBPATH) $(OBJECTS) -o [email protected]
.cpp.o: $<
$(CXX) $(LIBPATH) $(INCLUDES) $(LDFLAGS) $(CXXFLAGS) -c $<
%.o: %.cpp
$(CXX) $(LIBPATH) $(INCLUDES) $(LDFLAGS) $(CXXFLAGS) -c $<
.PHONY: clean
clean:
rm -rf $(OBJECTS) $(EXECUTABLE) *~ p1 *.o
編輯
基於@trojanfoe的答案,我想知道是否有可能使用陣列
OBJECTS = $(SOURCES:.cpp=_none.o) $(SOURCES:.cpp=_reg.o) $(SOURCES:.cpp=_reg_time.o)
EXECUTABLE = $(SOURCES:.cpp=_none) $(SOURCES:.cpp=_reg) $(SOURCES:.cpp=_reg_time)
而不是寫每一個具體的?
你考慮過CMake嗎?這真的很擅長這種事情。 – spraff
@spraff,不,我沒有想過CMake,因爲我不熟悉它。 – Eagle
好吧,我強烈建議您嘗試一下。我從未回頭。 – spraff