مشكلة في استخدام Yaml-CPP على OS X
-
18-09-2019 - |
سؤال
لذلك أواجه مشكلة في تجميع طلبي الذي يستخدم Yaml-CPP
أنا بما في ذلك "Yaml.h" في ملفات المصدر الخاصة بي (تماما مثل الأمثلة في Wiki Yaml-CPP) ولكن عندما أحاول تجميع التطبيق الذي أحصل عليه الخطأ التالي:
g++ -c -o entityresourcemanager.o entityresourcemanager.cpp
entityresourcemanager.cpp:2:18: error: yaml.h: No such file or directory
make: *** [entityresourcemanager.o] Error 1
بلدي makefile يشبه هذا:
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 عائدات:
-I/usr/local/include/yaml-cpp -L/usr/local/lib -lyaml-cpp
و yaml.h موجود بالفعل في / usr / المحلية / تشمل / yaml-cpp
أي فكرة ماذا يمكنني أن أفعل؟
شكرا
المحلول
الهدف الافتراضي الخاص بك هو "Mac" وكنت تحكم كيفية بناءه. يعتمد ذلك على ملفات الكائنات وليس لديك أي قواعد كيفية بناء تلك، لذلك جعل استخدام قواعدها الضمنية. تلك القواعد تفعل ذلك:
g++ -c -o entityresourcemanager.o entityresourcemanager.cpp
كما ترون لا يوجد -I/usr/local/...
جزء هنا.
أسهل طريقة لإصلاح ذلك هو تغيير قيمة CPPFLAGS و LDFlags على مستوى العالم:
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
يتم استخدام القيمة من خلال القواعد الضمنية التي تقوم ببناء ملفات الكائنات من ملفات CPP، لذلك يجب على المترجم الآن العثور على رؤوس YAML.
يحرر:LDFLAGS
ربما يجب أن تذهب بعد OBJECTS
نصائح أخرى
لا تطابق دليلك بما في ذلك؟
-I/usr/local/include
بدلا من
-I/usr/local/include/yaml-cpp