2017-01-11 8 views
-1

Я немного потерял голову, пытаясь разузнать наиболее эффективные способы компиляции проекта C++. Я придерживаюсь более управляемых языков, таких как Java, поэтому файл CMake немного тупой для меня.Что компилировать в качестве библиотеки?

Моя основная проблема заключается в том, что я компилирую как библиотеку и что я просто скомпилирую вместе? У меня есть основная функция в моей программе с различными классами в разных файлах с заголовками. Каков наиболее нормальный способ совместной работы с этими файлами? Должен ли я компилировать основную функцию отдельно от классов, а затем связывать их или они должны быть разделяемой библиотекой, хотя она немного мала для библиотеки?

Главным образом я ищу только общие рекомендации относительно того, что должно быть скомпилировано вместе, что нужно просто связать, и кого-то, чтобы более четко объяснить нормы/лучшие практики того, как все это работает.

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

+0

Если есть какие-то методы, которые требуются и для других процессов, то лучше разместить их в библиотеке. Если вы хотите развернуть только один бинарный файл, сделайте статическую библиотеку, но это увеличит размер двоичного файла. – VivekD

+2

Сопротивление: не используйте библиотеку вообще. Когда проект будет расти, вы узнаете, когда нужно разбить код на библиотеки и двоичные файлы. – usr1234567

+1

Используйте библиотеку почти в тех же случаях, что и в Java. – user4581301

ответ

1

Если вам нужен код только для одного исполняемого файла, вы можете просто связать все объектные файлы вместе. Библиотеки полезны, если вам нужны одни и те же файлы функций/объектов в разных исполняемых файлах.

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