我有一个名为 UePOSCommClient 的QtCreator
项目,它是一些 GUI应用程序,它取决于另一个名为的QtCreator
项目UePOSCommProtocol ,它是 UePOSCommClient 和一些服务器应用之间的通信协议的实现。这是 UePOSCommClient 项目目录hirerachy:
uePOSCommClient/
├── build
│ └── x64
│ ├── debug
│ │ ├── main.o
│ │ ├── Makefile
│ │ ├── moc_uemainwindow.cpp
│ │ ├── moc_uemainwindow.o
│ │ ├── uemainwindow.o
│ │ └── uePOSCommClient
│ └── release
├── main.cpp
├── uemainwindow.cpp
├── uemainwindow.h
├── uePOSCommClient.pro
└── uePOSCommClient.pro.user
这是 UePOSCommProtocol 项目的直接雇佣关系:
uePOSCommProtocol/
├── build
│ └── x64
│ ├── debug
│ │ ├── libuePOSCommProtocol.so -> libuePOSCommProtocol.so.1.0.0
│ │ ├── libuePOSCommProtocol.so.1 -> libuePOSCommProtocol.so.1.0.0
│ │ ├── libuePOSCommProtocol.so.1.0 -> libuePOSCommProtocol.so.1.0.0
│ │ ├── libuePOSCommProtocol.so.1.0.0
│ │ ├── Makefile
│ │ ├── moc_uemessageheader.cpp
│ │ ├── moc_uemessageheader.o
│ │ ├── moc_uemessagerequest.cpp
│ │ ├── moc_uemessagerequest.o
│ │ ├── moc_ueposcommprotocol.cpp
│ │ ├── moc_ueposcommprotocol.o
│ │ ├── uemessageheader.o
│ │ ├── uemessagerequest.o
│ │ └── ueposcommprotocol.o
│ └── release
│ ├── libuePOSCommProtocol.so -> libuePOSCommProtocol.so.1.0.0
│ ├── libuePOSCommProtocol.so.1 -> libuePOSCommProtocol.so.1.0.0
│ ├── libuePOSCommProtocol.so.1.0 -> libuePOSCommProtocol.so.1.0.0
│ ├── libuePOSCommProtocol.so.1.0.0
│ ├── Makefile
│ ├── moc_uemessageheader.cpp
│ ├── moc_uemessageheader.o
│ ├── moc_uemessagerequest.cpp
│ ├── moc_uemessagerequest.o
│ ├── moc_ueposcommprotocol.cpp
│ ├── moc_ueposcommprotocol.o
│ ├── uemessageheader.o
│ ├── uemessagerequest.o
│ └── ueposcommprotocol.o
├── net
│ └── comm_protocol
│ ├── uemessageheader.cpp
│ ├── uemessageheader.h
│ ├── uemessagerequest.cpp
│ ├── uemessagerequest.h
│ └── ueprotocolcommands.h
├── settings
│ └── uedefaults.h
├── ueposcommprotocol.cpp
├── ueposcommprotocol_global.h
├── ueposcommprotocol.h
├── uePOSCommProtocol.pro
└── uePOSCommProtocol.pro.user
现在,一切正常,项目 UePOSCommClient 编译没有错误,运行没有问题。但是,在 UePOSCommProtocol 项目中,我有以下#include
声明:
#include "../../../../../../../../../home/users/Projects/uePOSCommProtocol/settings/uedefaults.h"
是uedefaults.h
文件的绝对路径。我知道这是一种不好的做法,因此我将上层#include
替换为:
#include "settings/uedefaults.h"
这样做之后我得到No such file or directory
错误:
In file included from ../../../../uePOSCommProtocol/ueposcommprotocol.h:7:0,
from ../../../uemainwindow.h:11,
from ../../../main.cpp:3:
../../../../uePOSCommProtocol/net/comm_protocol/uemessagerequest.h:9:33: fatal error: settings/uedefaults.h: No such file or directory
#include "settings/uedefaults.h"
^
compilation terminated.
make: *** [main.o] Error 1
14:43:03: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project uePOSCommClient (kit: Desktop Qt 5.6.0 GCC 64bit)
When executing step "Make"
两个项目都位于/home/user/Projects
目录中,为什么我会收到此错误?
P.S。:我在Qt 5.6.0 for Linux (64bit)
上使用QtCreator 3.6.1
Ubuntu Linux 14.04 LTS (64bit)
。