我的 Makefile 没问题。但是,现在我想要一个名为“Makefile”的文件夹和一个名为“main”的文件夹,其中第一个文件夹包含我的 Makefile,第二个文件夹包含将成为 main()
的文件我的项目 k-d 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
以便编译。
请问我错过了什么?
这是大图(字面上 :))
最佳答案
Makefile 中的路径必须相对于工作目录(您运行 make 的目录),而不是包含 Makefile 的目录。与
main_par_auto.o: main/main_par_auto.cpp
$(CXX) -c main/main_par_auto.cpp $(FLAGS)
您应该会得到预期的结果。
请注意,期望用户以这种方式调用 make
是非常不寻常的。通常,您希望在调用 make
的目录中有一个 Makefile(它可能会也可能不会继续使用其他目录中的其他 makefile)。
关于c++ - 带目录的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29870951/