Я думаю, что это вопрос automake.Составив демо-версию cal3d «cally» (3d-модельная библиотека с анимацией с костями)
я борюсь с номически демо Cal3D. Первая проблема, с которой я столкнулся, заключалась в отсутствии базы кода Cal3D #include <cstring>
and #include <memory>
in a lot of places.
Выполнение этого каждый раз, когда я получил ошибку в любом исходном файле в Cal3d, было достаточно, чтобы я мог скомпилировать его.
чески демо также необходимы некоторые #include <cstring>
Теперь моя проблема заключается в том, что HAVE_SDL_H не определен, когда tick.cpp компилируется. Конфигурация и make-файл, похоже, согласны с тем, что SDL установлен в моей системе, но макросы в src/tick.cpp этого не делают.
Я думаю, что есть какая-то ошибка в configure.in или что-то в этом роде, но я, похоже, не знаю, что это такое.
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -O3 -ffast-math -funroll-all-loops -g -O2 -I/usr/include -I/usr/local/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -MT tick.o -MD -MP -MF ".deps/tick.Tpo" -c -o tick.o tick.cpp; \
then mv -f ".deps/tick.Tpo" ".deps/tick.Po"; else rm -f ".deps/tick.Tpo"; exit 1; fi
tick.cpp:144:5: error: #error "no timer implemented for your plateform"
Edit:
Я, наконец, составил демо.
Когда я собирал cal3d я добавил #include <cstring>
к следующим файлам:
- SRC/cal3d/hardwaremodel.cpp
- SRC/cal3d/platform.cpp
- SRC/cal3d/renderer.cpp
- SRC/cal3d/submesh.cpp
- SRC/cal3d_converter.cpp
Когда я скомпилирован чески я добавил #include <cstring>
в следующие файлы:
- SRC/demo.cpp
- SRC/model.cpp
В model.cpp я изменил линию 640 от
glBindTexture(GL_TEXTURE_2D, (GLuint)pCalRenderer->getMapUserData(0));
в
glBindTexture(GL_TEXTURE_2D, *(GLuint*)pCalRenderer->getMapUserData(0));
Я также сделал некоторые более уродливые изменения, чтобы получить src/tick.cpp компилировать.
В src/tick.cpp я удалил все, что имело отношение к SDL. Я также удалил макрос, если условие проверки для __i386__ или __ia64__, так что Tick :: getTime() также может быть скомпилирован.
Я знаю, что это не правильное исправление, поэтому улучшения очень приветствуются.
- 64-разрядный OpenSuSE с ядром 2.6.27.
- GCC: 4.3.2
- ГНУ Automake: 1.10.1
- ГНУ Autoconf 2.63
- 64-разрядные версии библиотеки SDL установлен с Zypper (через GUI).
Решение
В configure.in изменение
AC_CHECK_HEADERS([SDL.h])
в
AC_CHECK_HEADERS([SDL/SDL.h])
(а затем запустить AUTORECONF и ./configure)
в tick.cpp изменений все проверки на HAVE_SDL_H
к HAVE_SDL_SDL_H
Это все из-за реструктуризации в СВД библиотеке.
, пожалуйста, добавьте дополнительную информацию о вашей системе –