我的Makefile很好。但是,现在我想要一个名为“Makefile”的文件夹和一个名为“main”的文件夹,其中第一个文件夹包含我的Makefile,第二个文件夹包含我的项目的main()
文件, kd GeRaF。
目前,标题文件位于同一文件夹中。该文件夹还包含Makefile文件夹和主文件夹。
这是我的makefile(尝试了很多组合,这是最后一次尝试):
OBJS = main_par_auto.o
SOURCE = ../main/main_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)
# create/compile the individual files >>separately<<
main_par_auto.o: main_par_auto.cpp
$(CXX) -c ../main/main_par_auto.cpp $(FLAGS)
.PHONY : all
# clean house
clean:
rm -f $(OBJS)
我收到此错误:
make: *** No rule to make target `main_par_auto.cpp', needed by `main_par_auto.o'. Stop.
我正在执行此命令:make -f Makefile/Makefile_par_auto
以便编译。
我错过了什么?
这是大局(字面意思:))
答案 0 :(得分:1)
Makefile中的路径必须相对于工作目录(运行make的目录),而不是相对于包含Makefile的目录。与
main_par_auto.o: main/main_par_auto.cpp
$(CXX) -c main/main_par_auto.cpp $(FLAGS)
你应该得到预期的结果。
请注意,期望用户以这种方式调用make
是非常不寻常的。通常,您希望在您调用make
的目录中有一个Makefile(可能会或可能不会继续在其他目录中使用其他makefile)。