2009-06-30 76 views
6

就像我在上一個問題中所說的,我正計劃將一個Qt項目從VC++移植到QtCreator。具有多個庫和一個exe的QtCreator項目

該項目由4個子項目組成:其中3個是libs,最後一個是exe。 子項目是分層的,這意味着每個圖層都對它下面的圖層具有編譯和鏈接時間依賴性。

的文件組織如下:

root 
    lib1 
    lib2 
    lib3 
    main 

我白手起家創建的每個子項目的QtCreator。每個文件夾都包含一個具有相同名稱的專業文件(例如:lib1 - > lib1.pro)。使用這種方法,我已經構建了除最後一個必須鏈接可執行文件之外的所有項目。我得到我固定鏈接錯誤,通過手動編輯臨文件並添加以下代碼:

LIBS += ../path/lib1.a \ 
    ../path/lib2.a \ 
    ../path/lib3.a 

一切都很好,除了現在LIB3抱怨說,它無法找到LIB2和lib1內的符號。將LIBS添加到lib2.pro文件不起作用。

我有一種感覺,我沒有得到QtCreator與libs和可執行文件一起工作的方式。你將如何組織這樣的項目,以便編譯和鏈接正確?

回答

4

在解決了這個問題之後,我想起了GCC工具鏈中鏈接器參數的順序很重要。

反轉LIBS條目做了訣竅。

3

很高興看到您找到答案。您可能還想添加:

CONFIG += ordered 

到您的根目錄.pro文件(它只在'SUBDIRS'配置文件中有效)。它強制qmake生成Makefiles,以保持您在任何情況下列出它們的順序。

+0

是的,我在文檔中找到了這個選項,現在我正在使用它。最好的部分是我可以一次加載我的整個項目,不好的部分是我不能單獨構建每個lib。 :-) – rpg 2009-06-30 15:26:19

相關問題