【问题标题】:Managing multiple projects in Eclipse在 Eclipse 中管理多个项目
【发布时间】:2012-02-21 17:01:38
【问题描述】:

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

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

现在主要是开发库,想在demo应用中看到效果。所以主要的开发周期是更改库的源并重新编译演示应用程序。

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

我的第一个方法是在演示应用程序中包含所有项目(包括库)的所有源文件。这有效,但没有触发库中更新的文件(所以我每次都去清理和构建所有东西)。

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

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

旁注项目引用的另一个问题是,模板类是在他们的项目中编译的,这会导致分散注意力的错误消息。

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

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
       ...

每个项目都依赖于它下面的项目。

【问题讨论】:

    标签: eclipse qt compilation makefile eclipse-cdt


    【解决方案1】:

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

    【讨论】:

    • 到目前为止我没有使用TEMPLATE = subdirs,但我很确定它不适合我的需要,因为其他项目没有子目录。
    【解决方案2】:

    在找到合适的词进行搜索后,我终于找到了解决方案。主要问题是 QMake 创建的 Makefile 没有检查“静态”库作为目标的依赖项。我通过添加

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

    到项目文件。当库中发生更改时,二进制文件将被重新链接。

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

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

    【讨论】:

      猜你喜欢
      • 2012-04-02
      • 2012-06-03
      • 1970-01-01
      • 2013-11-16
      • 2013-10-29
      • 2010-11-16
      • 2021-01-17
      • 1970-01-01
      • 2010-10-20
      相关资源
      最近更新 更多