Программа кросс-компиляции не может найти заголовки SDL2

Я работаю над проектом в c++, который использует автоинструменты для легкой кросс-компиляции. Я sudo make install установил MXE в своей системе. Когда просто используется ./configure и, следовательно, используется g++, все работает гладко. Однако, используя ./configure --host=i686-w64-mingw32, я сталкиваюсь с этой ошибкой:

In file included from Game.cpp:1:0:
Game.hpp:4:22: fatal error: SDL2/SDL.h: No such file or directory
#include <SDL2/SDL.h>

После целого дня поиска в Google я не могу найти индикатор того, почему. Я знаю, что при компиляции на Win (в настоящее время на Ubuntu 15.04) заголовки называются по-разному для SDL, но я все еще использую компилятор Unix, насколько я понимаю. Нужно ли мне иметь отдельный источник для Windows с другим включением? Я проверил установку mxe на наличие ошибок и не получил ни одной, поэтому я не могу понять, что это проблема.

При необходимости я могу предоставить более полную картину среды, но я полагаю, что это, возможно, ошибка/предостережение конкретной ОС.


person Bloodyaugust    schedule 27.06.2015    source источник
comment
У вас действительно есть файл SDL.h или он называется по-другому? Что произойдет, если вы добавите -I/path/to/SDL2/ в параметры компилятора? Что говорит pkg-config --cflags SDL2?   -  person Dmitry Grigoryev    schedule 29.06.2015
comment
Я попробую подход с флагом -I и отчитаюсь. sdl2-config --cflags выходы: -I/usr/include/SDL2 -D_REENTRANT. SDL.h существует в /usr/include/SDL2/.   -  person Bloodyaugust    schedule 29.06.2015
comment
Убедитесь, что вы не включили SDL2 дважды. Если вы используете -I/usr/include/SDL2 и #include <SDL2/SDL.h>, компилятор будет искать /usr/include/SDL2/SDL2/SDL.h   -  person Dmitry Grigoryev    schedule 30.06.2015


Ответы (1)


Заголовки SDL2 должны быть включены следующим образом:

#include <SDL.h>

Нет:

#include <SDL2/SDL.h>

Почему?

Потому что, когда вы запускаете sdl2-config --cflags, он выводит путь, подобный этому include/SDL2, и если вы выполните ls, вы получите SDL.h, а не SDL2/SDL.h.

person Jean Pierre Dudey    schedule 29.06.2015
comment
Но, как я описал в своем посте, makeing при настройке для системы * nix работает нормально. Вы можете увидеть вывод конфига cflag в комментарии к основному сообщению. - person Bloodyaugust; 29.06.2015
comment
@Bloodyaugust это будет ошибка конфигурации, проверьте свои пути. Если вы используете #include <SDL2/SDL.h> в unix-подобных системах, это будет работать, потому что SDL2 находится в стандартном пути включения, но этого не происходит в Windows, поэтому вам придется использовать #include <SDL.h>, любая другая ошибка связана с вашей конфигурацией. - person Jean Pierre Dudey; 29.06.2015