2010-11-29 28 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