使用OS X上的yaml-CPP问题
-
18-09-2019 - |
题
所以我无法编译我的应用程序,它使用YAML-CPP
我,包括我的源文件“yaml.h”(就像在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
我的生成文件看起来是这样的:
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配置--cflags --libs YAML-CPP 返回:
-I/usr/local/include/yaml-cpp -L/usr/local/lib -lyaml-cpp
和yaml.h确实位于/ usr /本地/包括/ YAML-CPP
任何想法,我能做什么?
由于
解决方案
您默认的目标是“陆委会”和你有规则如何构建它。这取决于目标文件和你没有任何规则,如何建立这些,所以要使用它的潜规则。这些规则做到这一点:
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
后去
其他提示
难道你不匹配你的include目录?
-I/usr/local/include
代替
的 -I/usr/local/include/yaml-cpp
不隶属于 StackOverflow