Лучший подход для общей функциональности
-
20-09-2019 - |
Вопрос
Я создал ряд общих модулей, которые до сих пор хранил в одном каталоге и ссылался на них из каталогов проектов, которым они нужны.
Мне было интересно, есть ли лучший способ сделать это?
Как общие модули, так и код, использующий их, написаны на C++.
Решение
Я бы предложил создать статическую библиотеку и связать с ней.Это намного проще, чем DLL, вам не нужно беспокоиться о версиях, и вы работаете с ними так же, как с обычными модулями.
РЕДАКТИРОВАТЬ:По сути, статическая библиотека представляет собой набор объектных файлов.Если вы работаете с Visual Studio, вы можете создать проект статической библиотеки (или изменить тип вывода вашего проекта), который создаст файл .lib, который вы сможете связать в своем приложении.Если вы используете GCC, вы можете использовать «ar», чтобы создать файл библиотеки из набора файлов .o и снова связать его с вашим приложением.
Другие советы
Управление и улучшение вашего личного набора инструментов — важная вещь для программиста.Лично я всегда придерживаюсь подхода «как можно быстрее и проще».
Чем быстрее они будут связаны и включены в мою работу, тем скорее я почувствую себя «как дома».Я даже иногда выбрасываю все строки заказа и помещаю их в библиотеку по умолчанию, включаю пути, и вот они, к вашим услугам.(Конечно, не рекомендовал бы, но это быстро и легко)
Я не знаю, почему вы используете библиотеки DLL, поскольку включение обычной библиотеки вызовет меньше головной боли.
Кончик:Сделайте из них отдельный проект.Разместите их в центральном логическом месте.(Может быть, MyWorkspace/MyLibs) Поскольку ваш набор инструментов, вероятно, будет расти/изменять/улучшаться с каждым проектом, над которым вы работаете, я иногда устанавливаю свою рабочую среду, чтобы иметь возможность быстро переключаться, добавлять что -то, а затем возвращаться к первоначальному проекту.В этом случае полезно включить его в качестве зависимости проекта в вашу IDE, который можно будет собрать автоматически, а затем повторно связать.Это тривиально почти для всех IDE.
Другая проблема – работодатели.Обычно они с настороженностью относятся к вещам, которые вы переносите в их проекты.Особенно, если вы хотите закрыть для них источник.Но это уже история для другого вопроса ;)
Мне нравится помещать их в dll, чтобы размер моего исполняемого файла становился меньше.