2012-02-21 102 views
2

我有一個主要任務(開發一個庫),我將其拆分爲更易於管理。 基本上我有一個向量和矩陣的模板類,使用這兩個類的幾個類,使用所有這些類的主庫和使用庫來顯示功能並測試它們的Demo應用程序。在Eclipse中管理多個項目

演示應用程序是一個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 
     ... 

每個項目依賴於它下面的項目。

回答

0

最後我找到了解決辦法找到合適的詞來搜索後。主要問題是QMake創建的Makefiles沒有檢查「靜態」庫作爲目標的依賴關係。我通過添加解決此問題

PRE_TARGETDEPS += "path/to/my/libRary.a" 

到項目文件。隨着庫的變化,二進制文件被重新鏈接。

另外我設置在eclipse引用從屬的項目的每個項目(項目屬性 - >項目參考)來觸發重建如果必要的話。

而且我得到正確設置構建擺脫難看的錯誤消息從我的模板項目(我有一個main.cpp中顯示模板的一些示例使用,所以建築是不錯的)。問題是,那個。模板類的cpp文件也在構建過程中,所以它們被編譯了兩次,這給出了錯誤(之前的聲明在線[完全相同的行])。我通過從構建中排除所有這些模板文件來解決此問題。

0

如果我理解你的權利,搜索在.pro文件TEMPLATE = subdirs聲明。我不Eclipse的工作,所以不要判斷嚴格

+0

到目前爲止我沒有使用'TEMPLATE = subdirs',但我確定它不適合我的需要,因爲其他項目不是子類。 – Nobody 2012-02-29 11:16:13