为什么这个Makefile无法构建项目?

时间:2016-06-21 13:27:26

标签: c++ makefile

我有这个Makefile:

OBJS    = main_exp_par_auto.o
SOURCE  = ../main/main_exp_par_auto.cpp
HEADER  =   ../Division_Euclidean_space.h   ../Find_diameter.h  ../Find_k_max.h ../Householder.h    ../IO.h ../Mean_variance.h  ../Point.h  ../Random_generator.h   ../Random_kd_forest.h   ../Tree.h   ../Auto_random_kd_forest.h
OUT     =   geraf
CXX = g++
FLAGS   =   -pthread    -std=c++0x  -DRKD_PAR   -O3 -Wall

all: $(OBJS)
    $(CXX)  $(OBJS) -o $(OUT)   $(FLAGS)
    make    -f  makefiles/Makefile_exp_par_auto clean

# create/compile the individual files >>separately<< 
main_exp_par_auto.o:    main/main_exp_par_auto.cpp
    $(CXX)  -c  main/main_exp_par_auto.cpp  $(FLAGS)

.PHONY : all
# clean house
clean:
    rm -f $(OBJS)

# do a bit of accounting
count:
    wc $(SOURCE) $(HEADER)

,文件夹如下所示:

enter image description here

然而,我得到了:

gsamaras@gsamaras-A15:/media/gsamaras/a6cd1464-abf1-4a7b-b4a2-61f584d4cb32/gsamaras/code/C++/kd_GeRaF-master/makefiles$ make -f Makefile_exp_par_auto 
make: *** No rule to make target `main/main_exp_par_auto.cpp', needed by `main_exp_par_auto.o'.  Stop.

这是我的一个旧项目,本来应该有效,如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

您正在makefiles目录中调用它,而main目录位于同一级别。它查找main/main_exp_par_auto.cpp并找不到它。

像这样调用make

make -C /media/gsamaras/a6cd1464-abf1-4a7b-b4a2-61f584d4cb32/gsamaras/code/C++/kd_GeRaF-master -f makefiles/Makefile_exp_par_auto