2012-08-29 50 views
2

我與QT Subdir-未定義參照主 - 錯誤

TestProject/ 
    TestProject.pro 
    Subdir1/ 
      Subdir1.pro 
     sources/ 
      main.cpp 
    Subdir2/ 
     Subdir2.pro 
     headers/ 
      mainwindow.h 
     sources/ 
      mainwindow.cpp 

這裏是我的.pro文件 TestProject.pro

TEMPLATE = subdirs 
SUBDIRS += \ 
    Subdir1 \ 
    Subdir2 

Subdir1.pro結構簡單的QT子目錄項目

SOURCES += \ 
main.cpp 

Subdir2.pro

QT += sql 

SOURCES += \ 
    mainwindow.cpp \ 
HEADERS += \ 
    mainwindow.h \ 

當我嘗試運行我得到以下錯誤的應用程序:

(.text+0x18):-1: error: undefined reference to `main' 

我使用Qt創建者IDE上的Ubuntu 12.04。 我已經花費了所有時間試圖解決這個問題,爲了讓Qt能夠構建項目,必須將.pro文件放在什麼位置?

在此先感謝

+0

你的第二個目標是缺少一個主要功能。最簡單的解決方法是將所有文件放在一個.pro文件中。或者,您可以將mainwindow.h/cpp放入一個單獨的庫中,並將其鏈接到subdir2.pro中,但這似乎不必要地複雜。 –

+0

@FrankOsterfeld - 我不知道我明白..整個項目只有一個.pro文件?如果不是你會推薦什麼文件夾 – user866190

回答

3

它看起來像你要做的是將所有的源文件建成一個可執行文件。這不是子模板的用途,它用於創建一個生成多個不同目標(例如兩個不同的可執行文件,或可執行文件和庫)的單個Makefile。

您可能想要的只是使用一個.pro文件。

SOURCES = Subdir1/mainwindow.cpp Subdir1/main.cpp

或者你可以讓子目錄親文件到(按照約定).pri文件。然後在頂層,你只需要做:

include(Subdir1/Subdir1.pri) 
include(Subdir2/Subdir2.pri) 
+0

謝謝Dan,我想你明白我想要做什麼,並把我放在正確的道路上! – user866190

1

試圖將Subdir.pro文件添加到您的TestProject.pro文件中明確:

OTHER_FILES += \ 
    Subdir1/Subdir1.pro\ 
    Subdir2/Subdir2.pro\ 

這樣的Qt知道有子項目。