这里用一个很很简单的别人的例子这里说明:
- 项目目录如下:
all: gbdt ffm-train ffm-predict
gbdt:
#编译 solvers/gbdt 目录下的makefile
make -C solvers/gbdt
ln -sf solvers/gbdt/gbdt
ffm-train:
#编译 solvers/libffm-1.13 目录下的makefile
make -C solvers/libffm-1.13
ln -sf solvers/libffm-1.13/ffm-train
ffm-predict:
#编译 solvers/libffm-1.13 目录下的makefile 和上一个makefile共用一个makefile
make -C solvers/libffm-1.13
ln -sf solvers/libffm-1.13/ffm-predict
clean:
rm -f gbdt ffm fc.trva.t10.txt submission.csv *.sp* te.csv tr.csv
make -C solvers/gbdt clean
make -C solvers/ffm clean
CXX = g++
CXXFLAGS = -Wall -Wconversion -O2 -fPIC -std=c++0x -march=native -fopenmp
MAIN = gbdt
FILES = common.cpp timer.cpp gbdt.cpp
SRCS = $(FILES:%.cpp=src/%.cpp)
HEADERS = $(FILES:%.cpp=src/%.h)
all: $(MAIN)
gbdt: src/train.cpp $(SRCS) $(HEADERS)
$(CXX) $(CXXFLAGS) -o $@ $< $(SRCS)
clean:
rm -f $(MAIN)
CXX = g++
CXXFLAGS = -Wall -O3 -std=c++0x -march=native
# comment the following flags if you do not want to use OpenMP
DFLAG += -DUSEOMP
CXXFLAGS += -fopenmp
all: ffm-train ffm-predict
ffm-train: ffm-train.cpp ffm.o
$(CXX) $(CXXFLAGS) -o $@ $^
ffm-predict: ffm-predict.cpp ffm.o
$(CXX) $(CXXFLAGS) -o $@ $^
ffm.o: ffm.cpp ffm.h
$(CXX) $(CXXFLAGS) $(DFLAG) -c -o $@ $<
clean:
rm -f ffm-train ffm-predict ffm.o