Я не мог найти что-либо на Google или SO по этому поводу. Я не знаю, потому что это необычно или потому что я использую неправильные термины для поиска. Я читаю этот вопрос здесь, но он не ответил на мой вопрос.
Поэтому я пытаюсь создать библиотеку поверх SDL для C ++. Теперь я не могу понять, как сделать проекты, использующие мою библиотеку, полностью независимыми от файлов SDL, кроме dll
,
Когда я делаю свою библиотеку, я связываюсь с SDL2.lib
, а также SDL2main.lib
, Я включаю все заголовочные файлы SDL в мои файлы библиотек. Когда я строю, он генерирует мой библиотечный файл; GGL.lib
,
Но когда я хочу проверить свою библиотеку в другом проекте, я иметь включить все заголовочные файлы SDL, потому что в моем проекте Window.h
, это включает SDL.h
, Мне интересно, есть ли способ сделать заголовки моих библиотек независимыми от SDL, кроме dll
,
Очевидно, что вам следует избегать включения заголовочных файлов SDL в заголовочные файлы вашей библиотеки. Включите их только в исходные файлы, где это возможно. Это устраняет избыточные зависимости и ускоряет процесс компиляции. Но вы хотите полной независимости, поэтому, если вы не можете удалить один #include
директива, вы не смогли.
Если вам нужно объявить указатель типа SDL в вашем заголовке (как это обычно делается с SDL), опубликуйте его вперед. Однако этот тип останется неполным для пользователей вашей библиотеки. В случае, если ваша библиотека является объектно-ориентированной, есть Pimpl Idiom, который основан на том же принципе — он скрывает все.
Других решений пока нет …