我正在开发一个 C++ 类的集合,并且正在努力解决如何以一种维护组织的方式共享代码,同时又不影响集合用户的编译易用性。
我见过的选项包括:
- 分发编译的库文件
- 将源代码放在头文件中(在这个答案中讨论过隐式内联)
- 使用符号链接允许编译器查找文件。
我目前正在使用第三个选项,对于我想要包含的每个类,我符号链接每个类头和源文件(例如ln -s <path_to_class folder>/myclass.cpp
)这很好用,除了我无法移动项目文件夹位置(它破坏了所有符号链接) 而且我必须让所有这些符号链接的文件挂在身边。
我喜欢第二个选项(它具有 Java 的外观),但是如果所有内容都被声明为内联,我担心代码大小会膨胀。
该集合的用户将在某处创建一个项目文件夹,并以某种方式将该集合包含到他们的编译过程中。
我希望有几件事是可能的:
- 轻松编译(类似于
gcc *.cpp
项目文件夹中的内容) - 以未编译的形式轻松分发库。
- 图书馆按模块组织。
- 编译后的代码大小并不臃肿。
我不担心文档(Doxygen 负责)或编译时间:整个模块都很小,即使是最慢机器上的最大项目也不会花费超过几秒钟的时间来编译。
我正在使用 GCC 编译器,如果它有什么不同的话。