QtCore / QtGlobal:没有这样的文件或目录

时间:2014-07-01 19:17:15

标签: qt

我正在尝试构建两个库:一个静态共享。问题在于静态库。我有以下文件夹:

src/
  db/
    dbal.h
    dbal.pro
  dll/
    Distribution.h
    dll.pro
  project.pro

db是静态的,dll是共享的

Distribution.h

#ifndef DISTRIBUTION_H_
#define DISTRIBUTION_H_

#include <QtCore/QtGlobal>

#if defined(BUILDING_DLL)
#define DLL_FUNCTION Q_DECL_EXPORT
#else
#define DLL_FUNCTION Q_DECL_IMPORT
#endif

#endif /* DISTRIBUTION_H_ */

现在这里是db /中包含Distribution.h

的文件

dbal.h

#ifndef DBAL_H_
#define DBAL_H_

#include "Distribution.h"

...

#endif

db.pro

TARGET = db
TEMPLATE = lib
CONFIG = staticlib c++11

QT += core

INCLUDEPATH += ../dll

HEADERS += dbal.h
HEADERS += dbal_sqlite.h

SOURCES += dbal.cpp
SOURCES += dbal_sqlite.cpp

######################################################################
# Build to custom directories
######################################################################

DESTDIR = ../../build/debug/db

OBJECTS_DIR = $$DESTDIR/.obj
MOC_DIR = $$DESTDIR/.moc
RCC_DIR = $$DESTDIR/.qrc
UI_DIR = $$DESTDIR/.ui

当我在db /文件夹中运行make时,我收到以下错误:QtCore / QtGlobal:没有这样的文件或目录。它似乎也缺少-I命令。

这是我的日志:

make all 
cd src/db/ && ( test -e Makefile || /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /mnt/record/_dev/linux/projects/cdt/wasp/src/db/db.pro -o Makefile ) && make -f Makefile all
make[1]: Entering directory `/mnt/record/_dev/linux/projects/cdt/wasp/src/db'
g++ -c -m64 -pipe -O2 -std=c++0x  -I/usr/share/qt5/mkspecs/linux-g++-64 -I. -I../dll -o ../../build/debug/db/.obj/dbal.o dbal.cpp
In file included from dbal.h:9:0,
                 from dbal.cpp:3:
../dll/Distribution.h:4:27: fatal error: QtCore/QtGlobal: No such file or directory
 #include <QtCore/QtGlobal>
                           ^
compilation terminated.

2 个答案:

答案 0 :(得分:4)

请注意日志:

  

g ++ -c -m64 -pipe -O2 -std = c ++ 0x -I / usr / share / qt5 / mkspecs / linux-g ++ - 64 -I。 -I ../ dll -o ../../build/debug/db/.obj/dbal.o dbal.cpp

显示包含提供给g ++的路径,但不包含QtCore/QtGlobal的路径。

解决方案是.pro文件需要

CONFIG = staticlib c++11

更改为:

CONFIG += staticlib c++11

具体来说,CONFIG = ...行已从配置中删除 qt元素,因此您的项目不包含或链接Qt文件。

答案 1 :(得分:2)

问题在于以下几行:

CONFIG = staticlib c++11

修复程序正在将其更改为:

CONFIG += staticlib c++11

显然没有+ =运算符,我覆盖了必要的Qt默认配置变量值。