c++ - 带目录的 Makefile

标签 c++ makefile directory

我的 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 以便编译。

请问我错过了什么?

这是大图(字面上 :)) enter image description here

最佳答案

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/

相关文章:

c++ - 在C++中随机生成最多n的唯一数字

c++ - 如何使用 Qt 程序中的默认应用程序打开具有相对路径的 pdf

iphone - 构建在 XCode 中运行的 C 库最终会出现不受支持的架构

c++ - 如何使用 CMake 在链接命令行的末尾添加标志?

java - Eclipse 导出的文件在终端中运行时出现问题

c++ - 使用 ARDUINO 和 PROCESSING 在 8x8 LED 矩阵上显示数据问题

与第 3 方头文件相关的 C++ Builder 歧义错误

makefile - 如何让 $(error ...) 有条件地在 GNU Make 中工作?

c - 如何将真实文件夹添加到我的 Netbeans C 项目中?

windows - 如何通过批处理文件列出所有大小的文件夹