在Eclipse中管理多个项目

时间:2012-02-21 17:01:38

标签: eclipse qt compilation makefile eclipse-cdt

我有一个主要任务(开发一个库),我将其拆分以使其更易于管理。 基本上我有一个矢量和矩阵的模板类,几个使用这两个类的类,使用所有这些类的主库和一个使用库来显示功能并测试它们的Demo应用程序。

演示应用程序是一个Qt / cdt项目。 该库是一个纯cdt项目。 向量和矩阵类是一个cdt项目。 每个其他类都有自己的cdt项目。

现在我主要开发库并希望在演示应用程序中查看结果。因此,主要的开发周期是更改库的源代码并重新编译演示应用程序。

我的问题是:如何设置项目构建只需要重建必要的文件并相应地链接它们。

我的第一种方法是在演示应用程序中包含所有项目(包括库)的所有源文件。这工作但没有触发库中的更新文件(因此我每次都要清理并再次构建所有内容)。

在此之后,我想到静态构建库,然后将其链接到源文件,同时引用项目。这会在正确的位置触发重新编译,但似乎新的二进制文件未链接到可执行文件中。

基本上问题是:我应该如何安排所有这些文件具有清晰的布局(不是一个项目中的所有内容),在必要时构建正确的东西(而不是所有内容)并将它们链接到可执行文件中(如果有的话)变化)。

旁注项目引用的另一个问题是,模板类是在项目中编译的,这导致了令人分心的错误消息。

编辑为了更好地了解目录布局:

eclipse_workspace/
    demo_application/
       .cproject
       .project
       main.cpp
       somewidget.h
       somewidget.cpp
       demo_application.pro
       ...
    main_library/
       .cproject
       .project
       class1_header.h
       class1_implementation.cpp
       class2_header.h
       class2_implementation.cpp
       ...
    .../
    vector_matrix/
       .cproject
       .project
       vector.h
       vector.cpp
       matrix.h
       matrix.cpp
       ...

每个项目都取决于它下面的项目。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,请在.pro文件中搜索TEMPLATE = subdirs语句。我不使用Eclipse,所以不要严格判断

答案 1 :(得分:0)

最后,在找到要搜索的正确单词后,我找到了解决方案。主要问题是QMake创建的Makefile没有检查“静态”库是否是目标的依赖。我通过添加

解决了这个问题
PRE_TARGETDEPS += "path/to/my/libRary.a"

到项目文件。当库中有变化时,二进制文件会重新链接。

此外,我在eclipse中设置每个项目以引用依赖项目(项目属性 - >项目引用)以在必要时触发重建。

此外,我通过正确设置构建来摆脱模板项目中的丑陋错误消息(我有一个main.cpp来显示模板的一些示例用法,因此构建很好)。问题是,模板类的.cpp文件也在构建中,所以它们被编译了两次,这给出了错误(先前声明......在线[完全相同的行])。我通过从构建中排除所有这些模板文件来解决这个问题。