g ++无法识别包含目录

时间:2016-04-17 22:34:54

标签: c++ makefile g++ dlib

解决:我不完全确定原因和方法,但当我从-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(没有这样的文件或目录)

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 $@

Output for terminal make

The /dlib-18.18/dlib folder when accessed from the terminal

1 个答案:

答案 0 :(得分:0)

您的模式错误:.c表示规则是关于编译.cpp文件(不是 .cpp文件)。

因此,此规则不适用,GNU Make会回退到它自己的一组用于编译C ++代码的默认规则。

请尝试相反(假设您与dlib保持一致,并且您正在使用{CES文件的CXX = g++ CXXFLAGS = -I. -I/usr/include/ -I~/dlib-18.18 FLAGS = -g -O -Wall -Wextra -Werror -Wfatal-errors -std=c++11 -pedantic # To get *any* .o file, compile its .cpp file with the following rule. %.o: %.cpp $(CXX) $(FLAGS) $(CXXFLAGS) -c $< 扩展名):

make -B

现在运行-I~/dlib-18.18并在g ++命令行上查看<?php foreach (glob("posts/*.php") as $filename) { include $filename; } ?> 选项的编译器输出。