LINUX.ORG.RU

Работа с библиотеками, запутался я,помогите советом.

 , ,


0

1

Вобщем стукнуло мне в голову следующее.

Дабы не велосипедить по полной для работы с файлами,звуком и прочим использую сторонние либы, но подумалось что лочить движок на каких то конкретных я не хочу и решил разбить внутренности на аналогичные подсистемы окошки,звук,файлы,управление,графика со своим api, плюсы по моему есть, можно почти безболезненно заменить либу другой переписав реализацию api и всё, но вопрос то вот в чём.

Скажем есть sdl и я решил написать внутренне api для звука и управления окнами в своей программе, я делаю две либы которые предоставляют мне api, но внутри они реализованны на sdl (к примеру можно переписать с allegro, но интерфейс для моей программы останется тем же ) ну так вот каждая из двух либ

по идее должна быть не зависима и вот собственно вопрос. Это нормально что что я каждую буду собирать и линковать динамически с sdl потом прилинковывать ОБЕ к своей программе.

То есть на уровне сырцов меня положено будет расстрелять за то что я буду в каждом lib.c прописывать

#include <stdio.h> #include <stdio.h> #include <SDL/SDL.h>

По сути то проект один, но разбит на много кусков которые и тестить хочется раздельно и собирать раздельно, но опять же в конце концов всё это будет слинковано в одну либу которая и есть моя прога.

★★★★★

Последнее исправление: ymn (всего исправлений: 1)

попробуй сам подумать головой. Представь что это тебе такой вопрос задают на интервью.

nokachi
()

можно почти безболезненно заменить либу другой переписав реализацию api и всё

каждую буду собирать и линковать динамически ... потом прилинковывать ОБЕ к своей программе

в конце концов всё это будет слинковано в одну либу которая и есть моя прога

Я не понял, что именно Вам нужно, - иметь универсальный интерфейс с единственной реализацией, или возможность выбора нужной реализации в процессе работы программы.

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

Sorcerer ★★★★★
()

я делаю две либы которые предоставляют мне api

Ну и нахер тебе это надо. Делаешь интерфейсы к библиотекам и при сборке подключаешь нужный. В том же cmake это легко реализовать.

netcat ★★
()

лочить движок на каких то конкретных я не хочу

Всё правильно сделал.

прилинковывать ОБЕ к своей программе.

и? что именно тебя беспокоит?

тестить хочется раздельно и собирать раздельно

Всё правильно сделал.

nanoolinux ★★★★
()

Вместо того, чтобы пилить код, ты забиваешь себе голову ненужными вопросами.

trex6 ★★★★★
()
Ответ на: комментарий от trex6

Нужными, разбив на части с проектом легче работать, плюс не надо пересобирать всё каждый раз, только вот к примеру sdl предоставляет много чего и это хочется разбить на части, но чтобы просто собрать даже не либу, а объектник его нужно с sdl линковать. Ну вот редставим я как и многие наверно хочу кучу объектников которые потом просто слинковывать пересобрав лишь один из них и слинковать всё с sdl, но загвоздка в том что я НЕ соберу те объектники в которых есть функционал sdl не слинковывая их заранее с sdl получается мне надо два раза линковаться с sdl, при сборке объектников/либ и при сборке проета из этих объектников/либ. Это по моему странно как то.

Я учусь уму разуму разрабатывая движок.

p.s. И да можно просто разбить по директориям и представлять всё это как части, но образовать одно дерево которое и собирать.

Dron ★★★★★
() автор топика
Ответ на: комментарий от Dron

Я уже писал, что вместо пиления сферического движка в вакууме тебе надо пилить первую игру. Потом вторую. После этого общие наработки организовать в виде библиотек.

trex6 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.