首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OS X上使用yaml-cpp的问题

在OS X上使用yaml-cpp的问题
EN

Stack Overflow用户
提问于 2010-02-04 18:33:42
回答 2查看 1.5K关注 0票数 2

因此,我在编译我的应用程序时遇到了困难,我使用的是yaml-cpp。

我在源文件中包含了"yaml.h“(就像yaml-cpp wiki中的示例一样),但是当我尝试编译应用程序时,我会得到以下错误:

代码语言:javascript
复制
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看起来如下:

代码语言:javascript
复制
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 --c标志--libs yaml-cpp返回:

代码语言:javascript
复制
-I/usr/local/include/yaml-cpp  -L/usr/local/lib -lyaml-cpp

而yaml.h确实位于/usr/local/include/yaml-cpp中。

知道我能做什么吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-04 18:54:41

您的默认目标是"mac“,您有规则来构建它。它依赖于对象文件,而且您没有任何规则来构建这些文件,所以make使用它的隐式规则。这些规则就是这样做的:

代码语言:javascript
复制
g++    -c -o entityresourcemanager.o entityresourcemanager.cpp

如您所见,这里没有-I/usr/local/...部件。

解决这一问题的最简单方法是在全局范围内更改CPPFLAGS和LDFLAGS值:

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2012-03-23 17:22:30

你的包含目录不错吗?

-I/usr/local/include

而不是

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2202179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档