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

标签 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.

这是我的一个旧项目,应该可以正常工作,如何解决这个问题?

最佳答案

您从 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

关于c++ - 为什么这个 Makefile 无法构建项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37945803/

相关文章:

c++ - 列表迭代器不可取消引用?

Makefile:如何更改var的前缀?

linux - 当使用别人的应用程序代码时,我是否需要运行 Cmake 来获取我的操作系统的项目结构。

c - 从 makefile 传递多个参数

linux makefile 帮助声明基于 make gnu 或 make linux 规则的 FC FFLAGS 变量

c++ - FreeImage delete[]位图数据失败

c++ - 如何使用 WTL 拒绝调整窗口大小?

具有多个 *.cpp 文件的 Linux 上的 C++ 生成文件

c++ - 用原语 union 公共(public)初始序列

c++ - VerQueryValueA 在资源 block 外写入无效内存