开发者

Qmake and Make using separate folders for sources and headers

I'm going mad on this stupid problem.

I've a tree like this:

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

I tried EVERYTHING to make it look in both the folders, but somehow I can't get it working. I don't know much about QMake, but I tought it was easy. And I was wrong.

So actually I ended up having the src.pro file in this way:


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

[...]

And the sources.pro and headers.pro in this way:

sources.pro


SOURCES = one.cpp \
      开发者_如何学C    two.cpp

headers.pro


HEADERS = one.h \
          two.hpp

And of course (not) the problem is that it still doesn't see the stuff all together. I looked at the documentation too, but I swear I don't get it lol


It's been awhile since I've had to use qmake (long live CMake!), but can't you just set the INCLUDEPATH variable in your .pro file, i.e., do something like:

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

Then just point the entry in your SOURCES var at the sources folder like so:

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

It's not clear to me why you're using TEMPLATE = subdirs. It doesn't seem like it should be necessary in your case. Can't you just use TEMPLATE = app (or TEMPLATE = lib) and be done with it? Something like this:

QT += dbus
TEMPLATE = app
TARGET = example

INCLUDEPATH += ./sources

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜