2010-11-29 49 views
0

我瘋了這個愚蠢的問題。Qmake和使用單獨的文件夾的來源和標頭

我有一棵樹是這樣的:

src 
|--- sources 
     |--- one.cpp 
     |--- two.cpp 
     |--- sources.pro 
|--- headers 
     |--- one.h 
     |--- two.hpp 
     |--- headers.pro 
|--- src.pro 

我想盡一切辦法讓它看起來在這兩個文件夾,但不知何故,我不能讓它工作。我對QMake的瞭解不多,但我覺得這很容易。我錯了。

所以實際上我最後不得不以這種方式src.pro文件:

 

QT += dbus 

CONFIG += warn_on 
DEFINES = QT_FATAL_WARNINGS QT_NO_DEBUG_OUTPUT 

devel { 
    DEFINES -= QT_NO_DEBUG_OUTPUT 
} 

OBJECTS_DIR += build 
MOC_DIR += build 

TARGET = example 

[...] 

TEMPLATE = subdirs 
SUBDIRS = sources \ 
      headers 

[...] 
 

而且sources.pro和headers.pro這樣:

sources.pro

 

SOURCES = one.cpp \ 
      two.cpp 
 

headers.pro

 

HEADERS = one.h \ 
      two.hpp 
 

當然(不)問題是它仍然沒有看到所有的東西在一起。 我看着的文件太多,但我發誓,我不明白這一點笑

回答

2

它已經一段時間,因爲我已經使用的qmake(萬歲CMake!),但你不能只設置INCLUDEPATH變量在.pro文件,即做這樣的事情:

INCLUDEPATH += ./sources 
INCLUDEPATH += ./headers 
INCLUDEPATH += ../utils/include 
# (etc, etc.) 

然後,只需點在sources文件夾,像這樣在你的SOURCES VAR條目:

SOURCES = sources/one.cpp \ 
      sources/two.cpp 

我我不清楚你爲什麼使用TEMPLATE = subdirs。在你的情況下,它似乎不應該是必要的。你不能只使用TEMPLATE = app(或TEMPLATE = lib)並完成它嗎?就像這樣:

QT += dbus 
TEMPLATE = app 
TARGET = example 

INCLUDEPATH += ./sources 

SOURCES += sources/one.cpp \ 
      sources/two.cpp 
+0

謝謝!我只是通過添加INCLUDEPATH + = sources \ headers(我在發佈該問題之前部分嘗試),並將所有文件(sources/one.cpp headers/one.h)的源代碼和頭文件路徑添加進去,從而解決了問題。將它視爲一個獨特的文件夾:)非常感謝! – eij 2010-11-29 14:37:18