我有一系列旨在处理非常具体的任务的小型库“模块”。一个单独的模块通常只包含 a.h
和 a .cpp
,可能还有另一组提供用户可能会觉得有用的相关非朋友、非成员函数。
例如,Foo.h
可以声明一个名为 的类Foo
,该类Foo.cpp
定义,也 FooUtilities.h
可以声明一个使用Foo
由 定义的函数FooUtilities.cpp
。
通常,为了在我的程序中使用这些模块,我将.h
and添加.cpp
到我的项目中以及#include
在.h
任何需要它的文件中。然而,对于使用更多潜在相互依赖模块的大型程序来说,这会带来很大的不便。因此,我想将它全部编译为一个单一的整体静态或动态库,这样我就可以将库文件添加到我的项目中,将标题搜索目录设置为包含上述.h
文件的文件夹,然后编译。
看起来很简单,对吧?我所要做的就是启动一个以静态/动态库作为构建目标的新项目,然后添加所有适当的文件。.cpp
无论如何,这些文件#include
将.h
被编译并添加到最终产品中。
但是,一些模块使用模板,因此必须使用.tpp
而不是.cpp
. 这些.tpp
文件仅用于组织,#include
并由它们各自的头文件组成,这与处理普通模块的方式相反。因此,仅将它们添加到我的库项目中不会编译任何东西。
我该如何解决这个问题?我应该有一个CompileThis.cpp
包含所有使用模板的模块的文件吗?如果是这样,这个文件是否也应该包含非模板模块?看起来这可能会迅速成为组织混乱。