我们正在创建非常复杂的嵌入式系统,«sources»包含很少的Visual C ++,IAR,Code Composer Studio和Altium Designer方案和pcbs项目。所有这些可能只有几个版本。 那么,你可以建议我安排所有这些东西吗? 谢谢
答案 0 :(得分:4)
您认为来源的所有内容都应位于源代码管理系统下,例如SVN。这是处理版本,修订,分支和标记的最佳方法。 SVN可以处理二进制文件,因此您不会遇到非文本文件的问题。
答案 1 :(得分:3)
我和你有相同的设置。
我使用Altium Designer进行硬件原理图和PCB设计。但我也有固件源文件和相关实用程序。我有机械设计文件。
我是这样做的:
Project Name
Firmware
MainCpu
trunk
tags
branches
IoCpu
trunk
tags
branches
Hardware
MainPcb
trunk
tags
branches
IoPcb
trunk
tags
branches
PowerPcb
trunk
tags
branches
Mechanical
Chassis
trunk
tags
branches
Other
trunk
tags
branches
这样,所有项目文件都存储在SVN存储库中。我发现唯一的缺点是你不能只检查项目并获得最新的FW / HW / MEK文件。您必须查看每个FW / HW / MEK负责人。
FW / HW / MEK的单独子模块的原因是它们将获得单独的版本标签。
答案 2 :(得分:2)
如果您的C ++源文件很多并且跨越多个目录,那么John Lakos对grokking Large Scale C++ Software Design的努力可能非常值得。本书的主题是软件的物理布局,即目录中源代码文件的排列,限制或扩展您修改软件的能力。
答案 3 :(得分:1)
我喜欢在顶层反映每个可编程部分的目录结构(即微控制器,DSP1,FPGA1,FPGA2,......)
我还想拥有一个包含所有生成文件的子目录,因此很容易创建一个干净的源代码树。还可以直接从源代码配置工具轻松完成整个构建。 (即以尽可能少的步骤从源到二进制图像获取和构建)
此外,每个可编程部件都有自己的版本号,以及一个反映每个子组件版本号组合的版本号。
答案 4 :(得分:0)
绝对使用源代码控制,如果程序本身不支持它,只需保留您在源代码管理下使用的父文件夹。 SVN是我目前的收藏。
至于如何安排你的文件,我注意到你的列表上有Altium Designer,该程序将a)与源代码控制相得益彰,b)以有序的方式安排你的文件,假设你使用整个'项目的文件结构。考虑使用他们的'PCB'(如果这是你正在做的)或“嵌入式”项目,当你创建一个时,它会创建存储桶,以便将所有不同类型的文件存储到其中。
即使您不想为文件实际使用Altium,也要创建一个项目并查看其目录结构,以了解您需要跟踪的所有文件。
答案 5 :(得分:0)
(除了琐碎的助手类)在每个cpp / h文件中放置一个类,并将cpp / h文件命名为与该类相同。
将相关的类文件分组到文件夹中(您可以选择使用与文件夹结构匹配的命名空间层次结构。这里的.net方法是使用CompanyName.ProductName命名空间,您的文件存储在您的ProductName项目/子文件夹中解)。例如,您可以将Math,I / O和Drawing类分组到单独的“子系统”文件夹中。
理想情况下,将这些单独的部分放入可重用的库(MyCompany.Math)中。如果您想开发一种可以共享某些代码的新产品,您会很高兴。在这种情况下,顶级“文件夹”本身就成为独立的项目,您可以开始着手最小化它们之间的依赖关系,以实现并在代码库中实施更好的整体框架设计。
文件夹中的理想是在杂乱和稀疏之间找到一个很好的平衡 - 尝试平衡文件夹,使它们各有5-15个文件。如果更少,请考虑合并文件夹;如果更大,请考虑添加子类别文件夹以降低复杂性。
只要您的类/文件和命名空间/文件夹具有良好的描述性名称,并且您的文件夹具有逻辑结构,您就可以非常轻松地导航非常大的项目。
冒着开始宗教战争的风险,我更喜欢将标题及其源文件放在同一个文件夹中,以便在编辑.cpp时可以轻松访问.h而不必向上移动一直都是一个文件夹。
答案 6 :(得分:-2)
降低复杂性!
我的第一位工程学教授有着名的第一堂课。它由黑板上写的单个方程组成:
完美=简单
源控制系统的问题在于它们管理复杂性但也促进了它。