这个问题类似于
this one,但不是重复,因为我问的是那个问题没有讨论的问题.
我在Delphi 7中有一个客户端 – 服务器项目,具有以下目录结构:
\MyApp \MyClientApp \MyServerApp \lib
有两个实际的Delphi项目(.dpr),MyClientApp和MyServerApp文件夹各一个.
lib文件夹具有.pas单元,它们具有客户端和服务器应用程序的公共代码.我想知道的是我是否应该在客户端和服务器项目中包含那些.pas文件?或者我应该在包含这些单位的lib文件夹中创建一个包?或者我应该将.pas文件保留在lib文件夹中,而不是将它们添加到任何应用程序/包中?
每种方法的优缺点是什么?哪种方式“最好”?将lib文件夹中的这些单元包含在多个项目中是否有任何问题?
现在,lib文件夹中的单元不是任何app / package的一部分.这样做的一个缺点是,当我在Delphi中打开我的客户端应用程序时,我想在项目中的所有文件中搜索某些内容,它也不会搜索lib文件夹中的单元.我通过打开这些单位并在所有打开的文件中查找或使用grep搜索(但我更喜欢更好的解决方案)来解决这个问题.
我也非常喜欢一个解决方案,我不必去打开一些单独的软件包并在我对lib文件夹中的那些文件进行更改时重新编译它(我应该在哪里使用项目组?).
解决方法
应用程序之间的共享单元始终存在在一个应用程序中完成不兼容更改的风险,这些更改会破坏另一个另一方面,制作这些单元的副本更加糟糕,因此将它们移动到自己的子目录中的方法至少会增加心理障碍,无需考虑其他程序就可以更改它们.
至于将它们添加到项目文件中:我通常会添加一些我经常访问的单元(用于扩展或供参考)从IDE到项目,并留下其他单元供编译器使用搜索路径进行选择.我是按每个项目来做的,这意味着,有些单位可能是几个项目的一部分,为什么不呢?
如果你真的想要创建一个基于包的应用程序,那么将它们放入包只是有意义的,否则,为什么要这么麻烦?
有关如何组织项目和库的更多信息,请参阅http://www.dummzeuch.de/delphi/subversion/english.html