Qmake и Make, используя отдельные папки для источников и заголовков - PullRequest
1 голос
/ 29 ноября 2010

Я схожу с ума от этой глупой проблемы.

У меня есть такое дерево:

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

И конечно (не) проблема в том, что он все еще не видит все вместе. Я тоже посмотрел документацию, но клянусь, что не понимаю lol

1 Ответ

2 голосов
/ 29 ноября 2010

Прошло некоторое время с тех пор, как мне пришлось использовать qmake (да здравствует 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
...