コンパイル時に '"SDL.h" no such file or directory found'と表示される。

これは私の現在のMakefileの一部です。

CFLAGS = -O2 -Wall -pedantic -std=gnu++11 `sdl-config --cflags --libs` -lSDL_mixer

libsdlは適切にインストールされており、SDL.hは/usr/include/sdlに入っていますが、どうしてもコンパイルできません。また、自分の.hファイルの中に「#include "SDL.h"`」という行を入れていますが、それでもダメです。

誰か理由を知っていますか?

ソリューション

ヘッダーファイルが/usr/include/sdl/SDL.hで、コードにSDLがある場合。

#include "SDL.h"

あなたのコードを修正する必要があります。

#include "sdl/SDL.h"

または、プリプロセッサにインクルードファイルの場所を伝える必要があります。

CFLAGS = ... -I/usr/include/sdl ...
解説 (0)

多くの場合、SDLは /usr/include/SDL にあります。その場合は、#includeの指示が間違っており、#includeとすべきです。

代わりの方法としては、/usr/include/SDLディレクトリをインクルードディレクトリに追加します。そのためには、コンパイラのフラグに -I/usr/include/SDL を追加してください。

IDEを使用している場合は、これも非常に簡単です。

解説 (0)

このヘッダーファイルは

/usr/include/SDL/SDL.h

を使用して、このヘッダーを取り込んでください。

#include 

の正しい使い方をしていますね。

`sdl-config --cflags --libs` 

を得ることができます。

-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
-L/usr/lib/x86_64-linux-gnu -lSDL

が表示されます。また、標準的なインストールで動作する以下のような使い方もあります。

`pkg-config --cflags --libs sdl`

を提供しています。

-D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL -lSDL
解説 (1)