내가 바꿀 메이크 파일을 만들었습니다. make
을 실행할 때 하나 이상의 타겟을 생성합니다. 내 프로그램에서여러 타겟을위한 메이크 파일 만들기
내가 자기 미리 정의 된 매크로 (예 : TIME
, REG
및 _DEBUG
)를 사용하고 난 내 메이크 나는 그것이 하나 명 밖으로 사전 정의 된 매크로와 대상, REG
하나와 REG
또 다른 하나를 생성하는 것으로 그 방법을 가지고 싶습니다 및 TIME
.
나는 희망하는 것이 Makefile의 합당한 소원이며, 그렇지 않다면 알려 주시기 바랍니다.
PS :
권고 기꺼이 내가 여기 를 사용하여 내 메이크입니다입니다
를 제외 될 것이다 :
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