ioquake3 на MacOS: объединение Freetype с игрой

Я делаю игру на основе ioquake3 и включил использование Freetype для рендеринга шрифтов в игре.

Тем не менее, эта библиотека была болью в спине на протяжении всей разработки, и теперь игра не работает правильно на компьютерах с MacOS, кроме моего собственного, потому что на них не установлен Freetype.

Он будет искать «renderer_opengl2_x86_64.dylib» в «.» и потерпеть неудачу. Тем не менее, ioquake3 прекрасно работает на том же компьютере. И если я передам dylibs рендерера ioquake3.app, игра запустится, но без рендеринга текста, потому что Freetype не включен по умолчанию.

Итак, мой вопрос заключается в том, как я смогу связать Freetype с моей игрой на основе ioquake3. Я думал, что это будет так же просто, как скопировать libfreetype.6.dylib в [game].app/Contents/MacOS, но это тоже не сработало. Оригинальная игра не использует его, поэтому копирование dylib рендерера не сработало. Я не хочу, чтобы каждый пользователь должен был устанавливать Freetype, связывать его и все такое, так как же мне получить библиотеку, связанную с моим приложением?


person Ian Schwabe    schedule 23.01.2017    source источник


Ответы (1)


Итак, я обнаружил, что файлы dylib рендерера обращались к жестко запрограммированному каталогу в системе, каталогу, который мне пришлось сопоставить самому, чтобы заставить игру скомпилироваться, но в остальном он не на обычном компьютере с MacOS.

Итак, что я сделал, так это использовал install_name_tool в терминале, чтобы изменить каталог, в котором искали dylibs.

install_name_tool -change /usr/local/lib/libfreetype.6.dylib @executable_path/libfreetype.6.dylib /Applications/{game name}.app/Contents/MacOS/renderer_opengl2_x86_64.dylib

^ Затем то же самое для dylib OpenGL 2, и я скопировал файл libfreetype.6.dylib в каталог Contents/MacOS моего приложения. После этого игра отлично работала на моем компьютере и на компьютере-«морской свинке», на котором не был установлен Freetype.

Я надеюсь, что это может помочь всем, у кого есть проблемы с Freetype и ioquake3!

person Ian Schwabe    schedule 05.02.2017