BEHOBEN: Ich bin nicht ganz sicher, warum und wie, aber wenn ich von -I ~/dlib-18.18 zu -I ../ dlib-18.18 wechselte, dann funktioniert es.g ++ erkennt kein Include-Verzeichnis
Ich versuche, ein Makefile zu schreiben, das ein Programm mithilfe der DLL-Bibliothek kompiliert. Ich habe heruntergeladen und installieren Sie die Bibliothek im Stammverzeichnis.
Der Header der CPP-Datei lautet wie folgt:
#include "dlib/optimization.h"
#include <iostream>
DLIB Ordner innerhalb DLIB-18.18 enthalten und optimization.h ist in der Tat im DLIB Ordner.
Unten ist mein Makefile (oder ein Teil davon). Ich habe das relevante Verzeichnis in CFLAGS aufgenommen. Doch während der Kompilierung, g ++ sagt, dass es nicht optimization.h (Keine solche Datei oder das Verzeichnis)
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 [email protected]
The /dlib-18.18/dlib folder when accessed from the terminal
Sie erwähnen '.cpp', haben aber die Regel'% .o:% .c'. Sollte das nicht "% .o:% .c% .cpp" oder "CXXFLAGS" sein? –
Also ist der Pfad zum Header '/ dlib-18.18/dlib/optimization.h'? Das klingt in zweifacher Hinsicht seltsam, in einem von ihnen wahrscheinlich falsch. Die möglicherweise falsche Lösung besteht darin, dass Sie die Header einer Bibliothek in einem speziellen Ordner im Stammordner haben. Bist du sicher, dass du nicht '/ usr/include/dlib-18.18','./Dlib-18.18' oder sowas gemeint hast? Zweitens werden die Header in einem 'dlib'-Unterverzeichnis von' dlib-18.18' gespeichert, oder meintest du '#include" dlib-18.18/optimization.h "'? –