Qmake和Make使用单独的文件夹作为源和标题

时间:2010-11-29 02:00:29

标签: c++ 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

当然(不是)问题是它仍然没有看到所有东西。 我也查看了文档,但我发誓,我不明白它,哈哈尔

1 个答案:

答案 0 :(得分:2)

我已经有一段时间了,因为我不得不使用qmake(long CMake!),但你不能只在你的INCLUDEPATH文件中设置.pro变量,即,做类似的事情:

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

然后只需将SOURCES var中的条目指向sources文件夹即可:

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