2011-08-28 111 views
1

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

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

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

编辑:具体的事情,我从DE需要:

  1. IDE与GUI(我喜欢vim和壳,但别人不一样)
  2. 单独的项目,每个创建静态库,设置标头包括与示例程序
  3. 不同配置针对每个项目,连接/包括不同版本和/或依赖关系的配置
  4. 代码完成和SVN支持
+0

[跨平台C++项目入门]可能的重复(http://stackoverflow.com/questions/3788769/getting-started-with-a-cross-platform-c-project)还有很多其他的类似的问题太... – rubenvb

+0

rubenvb:另一个人问别的东西(eclipse和vs2010中的编译),但感谢链接 - 我会看看Scons –

回答

0

所以我现在就解决了。我创建了一个名为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 

库使用makefile自动复制到这里。包括头:

#include "proj1/someheader.h" 

将它链接:

 
-L${POOL}/lib/arm -lproj1 

注意:谨防-l 参数秩序。

0

make和Makefiles是为这种建筑和链接作业而建立并经过深思熟虑的方法,特别是与automakelibtool结合使用。这些工具与SVN很好地集成,也可能与Eclipse集成。

+1

Eclipse中有两个选项用于C++项目。首先有Eclipse生成的makefile。可以包含自定义属性,但是AFAIK并不使用$ {CC}之类的变量,所以编写一个用于构建示例的makefile是相当棘手的。第二个选项是纯粹的用户提供的makefile。到目前为止,我使用这个,通过环境变量来切换配置,但是在这里我放弃了一些Eclipse功能(如指定每个配置包含或库列表)。 –

+0

如果您想发布项目,请将所有仅限Eclipse的功能放在Makefile中,并使用Eclipse进行代码编辑,而不是构建自动化。真。自动工具(autoconf和automake)为您提供所需的所有配置选项,它们可以进行编辑和分发,特别是它们是90%开源项目使用的事实标准。因此它们更易于使用,理解和构建。 – thiton

+0

我不会发布它 - 它是由大学维护的更大项目的一部分 –