【发布时间】:2016-08-09 12:59:20
【问题描述】:
已解决:我不完全确定为什么以及如何,但是当我从 -I~/dlib-18.18 更改为 -I../dlib-18.18 时,它就可以工作了。
我正在尝试编写一个使用 dlib 库编译程序的 makefile。我已经下载并安装在根目录下的库。
.cpp文件头如下:
#include "dlib/optimization.h"
#include <iostream>
dlib 文件夹包含在 dlib-18.18 中, optimization.h 确实在 dlib 文件夹中。
下面是我的makefile(或其中的一部分)。我已将相关目录包含在 CFLAGS 中。但是,在编译过程中,g++ 说找不到 optimization.h (No such file or directory)
EXUCUTABLE = graph
CXX = g++
CXXFLAGS = -I. -I/usr/include/ -I~/dlib-18.18
FLAGS = -g -O -Wall -Wextra -Werror -Wfatal-errors -std=c++11 -pedantic
############### Rules ###############
all: ${EXUCUTABLE}
clean:
rm -f ${EXUCUTABLE} *.o
## Compile step (.cpp files -> .o files)
%.o: %.cpp
${CXX} ${FLAGS} ${CXXFLAGS} -c $<
graph: graph.o
${CXX} ${FLAGS} $^ -o $@
【问题讨论】:
-
您提到了
.cpp,但有规则%.o: %.c。这不应该是%.o: %.c %.cpp还是设置CXXFLAGS? -
所以标题的路径是
/dlib-18.18/dlib/optimization.h?这在两个方面看起来很奇怪,其中一个可能是错误的。可能错误的是您将库的标头位于根目录的特殊文件夹中。你确定你的意思不是/usr/include/dlib-18.18、./dlib-18.18或其他什么?其次,标头是否存储在dlib-18.18的dlib子目录中,还是您的意思是#include "dlib-18.18/optimization.h"?