Frage

Also ich Probleme habe meine Anwendung kompilieren, die yaml-CPP wird mit

Ich bin auch „yaml.h“ in meinen Quelldateien (wie die Beispiele in dem yaml-CPP-Wiki), aber wenn ich versuche, Kompilieren die Anwendung ich die folgende Fehlermeldung erhalten:

g++    -c -o entityresourcemanager.o entityresourcemanager.cpp
entityresourcemanager.cpp:2:18: error: yaml.h: No such file or directory
make: *** [entityresourcemanager.o] Error 1

mein Make-Datei sieht wie folgt aus:

CC = g++
CFLAGS = -Wall
APPNAME = game
UNAME = uname
OBJECTS := $(patsubst %.cpp,%.o,$(wildcard *.cpp))

mac: $(OBJECTS) 
        $(CC) `pkg-config --cflags --libs sdl` `pkg-config --cflags --libs yaml-cpp`  $(CFLAGS) -o $(APPNAME) $(OBJECTS)

pkg-config --cflags --libs yaml-CPP Rückgabe:

-I/usr/local/include/yaml-cpp  -L/usr/local/lib -lyaml-cpp

und yaml.h ist in der Tat befindet sich in / usr / local / include / yaml-CPP

Jede Idee, was ich tun könnte?

Danke

War es hilfreich?

Lösung

Ihr Standardziel ist „mac“ und Sie haben entscheiden, wie es zu bauen. Es hängt von Objektdateien und Sie haben keine Regeln, wie diese zu bauen, so stellen seine impliziten Regeln. Diese Regeln genau das zu tun:

g++    -c -o entityresourcemanager.o entityresourcemanager.cpp

Wie Sie sehen können gibt es keine -I/usr/local/... Teil hier ist.

Der einfachste Weg, dies zu beheben, ist global CPPFLAGS und LDFLAGS Wert zu ändern:

YAML_CFLAGS := $(shell pkg-config --cflags yaml-cpp)
YAML_LDFLAGS := $(shell pkg-config --libs yaml-cpp)
SDL_CFLAGS := $(shell pkg-config --cflags sdl)
SDL_LDFLAGS := $(shell pkg-config --libs sdl)

CPPFLAGS += $(YAML_CFLAGS) $(SDL_CFLAGS)
LDFLAGS += $(YAML_LDFLAGS) $(SDL_LDFLAGS)

mac: $(OBJECTS) 
    $(CXX) -o $(APPNAME) $(OBJECTS) $(LDFLAGS) 

CPPFLAGS Wert von impliziten Regeln verwendet wird, die Objektdateien von CPP-Dateien erstellen, so sollte nun Compiler yaml Header finden.

Edit: LDFLAGS wahrscheinlich nach OBJECTS gehen sollte

Andere Tipps

Sie nicht Mismatch Ihre include?

-I/usr/local/include

statt

-I/usr/local/include/yaml-cpp

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top