C++ C++;设计机构

C++ C++;设计机构,c++,eclipse,projects-and-solutions,project-organization,C++,Eclipse,Projects And Solutions,Project Organization,我已经成为一个共享库项目的维护者。该库被分成几个模块,每个模块被编译为静态库,然后链接在一起。Eclipse用作IDE,代码存储在SVN服务器上。到目前为止,构建过程是手工构建库,将所有.a和.h移动到共享文件夹中,然后构建共享库。代码需要针对linux、ARM和windows进行编译 问题是我需要将当前模块进一步拆分,以便更好地进行测试(多个测试和示例简单程序,只有一个带有main)的.cpp文件)和模块间代码共享(模块a和模块B都使用C,但我不想连接a和B)。这将导致更复杂的依赖关系树,这将

我已经成为一个共享库项目的维护者。该库被分成几个模块,每个模块被编译为静态库,然后链接在一起。Eclipse用作IDE,代码存储在SVN服务器上。到目前为止,构建过程是手工构建库,将所有.a和.h移动到共享文件夹中,然后构建共享库。代码需要针对linux、ARM和windows进行编译

问题是我需要将当前模块进一步拆分,以便更好地进行测试(多个测试和示例简单程序,只有一个带有
main
)的.cpp文件)和模块间代码共享(模块a和模块B都使用C,但我不想连接a和B)。这将导致更复杂的依赖关系树,这将很难手动处理。我还需要能够构建一个项目的更多配置,可能会链接到依赖项目的不同版本

您将如何组织代码和设置开发环境

编辑:我从DE中需要的具体内容:

  • 带有GUI的IDE(我喜欢vim和shell,但其他人不喜欢)
  • 单独的项目,每个项目创建静态库,包含的标题集和示例程序
  • 每个项目的不同配置,链接/包括依赖项的不同版本和/或配置
  • 代码完成和SVN支持

  • make
    和makefile是此类构建和链接作业的既定且经过深思熟虑的方法,尤其是与
    automake
    libtool
    相结合。这些工具与SVN集成得很好,可能还与Eclipse集成得很好。

    所以我现在解决了它。我创建了一个名为Pool的文件夹。目录树:

    Pool - inc - arm - proj1 public headers directory - proj2 public headers directory - proj3 public headers directory - lin - proj1 public headers directory - proj2 public headers directory - proj3 public headers directory - win - proj1 public headers directory - proj2 public headers directory - proj3 public headers directory -lib - arm - libproj1.a - libproj2.a - libproj3.a - lin - libproj1.a - libproj2.a - libproj3.a - win - libproj1.a - libproj2.a - libproj3.a 链接它:

    -L${POOL}/lib/arm -lproj1 -L${POOL}/lib/arm-lproj1
    <>注释:注意-L库参数顺序。< /P>还有可能有很多其他类似的问题…RuNVB:另一个家伙正在询问其他东西(Eclipse和VS2010中的编译),但是无论如何感谢链接。我将看一下SconsThere是Eclipse中C++项目的两个选项。首先是Eclipse生成的makefiles。可以包括自定义的,但是AFAIK它不使用像${CC}这样的变量,所以为示例构建编写一个makefile是相当困难的。第二个选项是纯用户提供的makefile。到目前为止,我一直在使用这个工具,通过环境变量切换配置,但在这里我失去了一些Eclipse功能(比如指定每个配置包含或库列表)。如果您想要发布您的项目,请在Makefile中删除所有仅限Eclipse的功能,并使用Eclipse进行代码编辑,而不是构建自动化。真正地自动工具(autoconf和automake)为您提供了所需的所有配置选项,它们只能编辑和分发文本,尤其是它们是90%的开源项目使用的事实上的标准。因此,它们更易于使用、理解和构建。我不会发布它——它是大学维护的一个更大项目的一部分。Windows上的自动工具速度慢而且有点不可靠。您需要通过Cygwin或MSYS进行构建,这会带来很多问题。。。 -L${POOL}/lib/arm -lproj1