Problem mit yaml-CPP auf OS X
-
18-09-2019 - |
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
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