Problema usando yaml-CPP no OS X
-
18-09-2019 - |
Pergunta
Então, eu estou tendo problemas para compilar meu aplicativo que está usando yaml-CPP
Estou incluindo "yaml.h" em meus arquivos de origem (tal como os exemplos no wiki yaml-CPP), mas quando tento compilar o aplicativo eu recebo o seguinte erro:
g++ -c -o entityresourcemanager.o entityresourcemanager.cpp
entityresourcemanager.cpp:2:18: error: yaml.h: No such file or directory
make: *** [entityresourcemanager.o] Error 1
meus makefile esta aparência:
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 retornos:
-I/usr/local/include/yaml-cpp -L/usr/local/lib -lyaml-cpp
e yaml.h está realmente localizado em / usr / local / include / yaml-CPP
Qualquer idéia de que eu poderia fazer?
Graças
Solução
Seu destino padrão é "mac" e você tem regra como construí-lo. Depende de arquivos objeto e você não tem quaisquer regras de como construir aqueles, por isso certifique-se usando suas regras implícitas. Essas regras fazer exatamente isso:
g++ -c -o entityresourcemanager.o entityresourcemanager.cpp
Como você pode ver não há nenhuma parte -I/usr/local/...
aqui.
A maneira mais fácil de corrigir isso é mudar CPPFLAGS e LDFLAGS valor globalmente:
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)
valor CPPFLAGS
é usado por regras implícitas que os arquivos de construção de objetos a partir de arquivos do CPP, então agora compilador deve encontrar cabeçalhos yaml.
Edit:
LDFLAGS
provavelmente deve ir atrás OBJECTS
Outras dicas
Você não incompatibilidade seu diretório de inclusão?
-I/usr/local/include
em vez de
-I/usr/local/include/yaml-cpp