У меня есть серия небольших библиотечных «модулей», предназначенных для решения очень специфических задач.Один модуль обычно состоит только из .h
и .cpp
и, возможно, другого набора для предоставления соответствующих функций, не являющихся друзьями, не являющимися членами, которые пользователь может найти полезными.
Например, Foo.h
может объявить класс с именем Foo
, который определяет Foo.cpp
, а FooUtilities.h
может объявить функцию, которая использует Foo
, которая определяется FooUtilities.cpp
.
Обычно для использования этих модулей в моемпрограммы, я добавляю .h
и .cpp
в свой проект и #include
.h
в любых нужных файлах.Однако для более крупных программ, которые используют больше потенциально взаимозависимых модулей, это становится большим неудобством.Поэтому я хотел бы скомпилировать все это как одну монолитную статическую или динамическую библиотеку, чтобы я мог просто добавить файл библиотеки в свой проект, установить каталоги поиска заголовков для папок, содержащих вышеупомянутые .h
файлы, и выполнить компиляцию.
Кажется довольно просто, верно?Все, что мне нужно сделать, это начать новый проект со статической / динамической библиотекой в качестве цели сборки, а затем добавить все соответствующие файлы.Файлы .cpp
, которые в любом случае #include
файлы .h
, будут скомпилированы и добавлены в конечный продукт.
Однако некоторые модули используют шаблоны и поэтому вместо них должны использовать .tpp
.cpp
.Файлы .tpp
предназначены только для организации и имеют #include
d в соответствующих заголовочных файлах, что противоположно тому, как обрабатываются обычные модули.Из-за этого просто добавив их в мой библиотечный проект, ничего не скомпилируется.
Как я могу обойти это?Должен ли я иметь файл CompileThis.cpp
, который включает все модули, использующие шаблоны?Если так, должен ли этот файл также включать не шаблонные модули?Похоже, это может быстро превратиться в организационный беспорядок.