Включая SO файлы без заголовков - PullRequest
0 голосов
/ 28 апреля 2018

Недавно я занялся созданием базового игрового движка. Я решил поместить все свое промежуточное программное обеспечение в каталог Externals, где сценарий bash собирает все мое промежуточное программное обеспечение в общие объектные файлы в каталоге Binaries.

В моем CmakeLists.txt файле я могу связать эти библиотеки с моим основным исполняемым файлом, например:

add_library (glfw SHARED IMPORTED)
set_target_properties (glfw PROPERTIES IMPORTED_LOCATION 
  ${ENGINE_BINARIES_DIR}/Libraries/Shared/libglfw.so.3.2
)

...

target_link_libraries (Engine glfw)

Однако, когда я пытаюсь включить GLFW/glfw3.h в свой основной файл, он не компилируется. Это имеет смысл, потому что нет файла glfw3.h; однако все другие попытки включить glfw в мой проект потерпели неудачу.

TL; DR

Каков наилучший способ включить заголовки из существующей библиотеки общих объектов? Возможно ли достичь этого без каталога includes/glfw или нужно будет изменить их код / ​​структуру проекта для загрузки этих функций?

1 Ответ

0 голосов
/ 28 апреля 2018

Теперь я понимаю свою ошибку.

Я провел небольшое исследование общих объектов / библиотек DLL и сборки GLFW, прежде чем опубликовать этот вопрос; тем не менее, я думаю, что все еще не совсем понимаю, что такое общая библиотека и как она работает.

Теперь я понимаю, что вам do , на самом деле, нужно включить файл заголовка; поскольку он содержит объявлений кода промежуточного программного обеспечения, а библиотека libglfw.so.3.2 содержала определений кода.

Таким образом, я решил свою проблему, сохранив файл .so в каталоге Libraries/Shared и файл заголовка GLFW в каталоге External и используя CMake для указания компилятора / компоновщика на оба.

...