質問

だから私はYAML-CPPを使用している私のアプリケーションをコンパイルするトラブルを抱えています。

私は私のソースファイルで「yaml.h」を含めていますが(ただYAML-CPPのwikiの例のように)私は、私は次のエラーを取得するアプリケーションをコンパイルしようとしたときます:

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-config設定--cflags --libs YAML-CPP の戻ります:

-I/usr/local/include/yaml-cpp  -L/usr/local/lib -lyaml-cpp

とyaml.hが実際に配置されているは/ usr / local /含む/ 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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top