首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qmake项目文件

Qmake项目文件
EN

Stack Overflow用户
提问于 2011-02-09 13:29:28
回答 2查看 2.5K关注 0票数 1

我有一个我创建的类文件(头和cpp),我想在我的main.cpp文件中使用它。我生成了一个qmake项目文件(从我的main.cpp的当前目录),并添加了头文件和cpp:

代码语言:javascript
复制
HEADERS += $$quote(/home/myusername/projects/src/myclass.h)
SOURCES += $$quote(/home/myusername/projects/src/myclass.cpp)
SOURCES += main.cpp

当我运行makefile时,它似乎可以工作,直到它到达我的main.cpp中包含头文件的部分,然后它说:致命错误,没有这样的文件或目录

我觉得我犯了一个非常基本的错误,但我似乎找不到答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-09 15:26:32

首先,在项目文件中使用绝对路径绝对不是一个好主意。

如果该类是项目的一部分,但位于另一个目录中,请使用#include "relative/path/myclass.h"语法在项目文件和#include指令中使用相对路径。

如果该类不是项目的一部分,那么您应该将其编译为库,然后使用带有以下选项的qmake:

代码语言:javascript
复制
qmake INCLUDEPATH+=/path/to/the/header LIBS+=-L/path/to/the/library

并将库名称添加到项目文件中:

代码语言:javascript
复制
LIBS += -llibraryname

然后,您可以将您的类包含为#include <myclass.h>,请注意<>语法。

请注意,特定于工作站的内容将转到命令行,但与工作站无关的库名将转到项目文件。如果您想提供一些合理的默认位置,您可以使用以下技巧:

代码语言:javascript
复制
unix { # default path for the Unix systems
  isEmpty(MYLIB_PATH): MYLIB_PATH = /usr/local
}
INCLUDEPATH += $$MYLIB_PATH/include
LIBS += -L$$MYLIB_PATH/lib

然后,如果需要,您仍然可以从命令行覆盖该路径:

代码语言:javascript
复制
qmake MYLIB_PATH=/home/myusername/mylib
票数 4
EN

Stack Overflow用户

发布于 2011-02-11 02:03:23

我最终在@Sergey Tachenov的帮助下弄明白了这一点。我使用"../“将其从绝对路径更改为相对路径。

代码语言:javascript
复制
HEADERS += ../src/classfile.h
SOURCES += ../src/classfile.cpp
SOURCES += main.cpp

我还修改了main.cpp包含文件,以便它是

代码语言:javascript
复制
#include "../src/classfile.h"

在进行了这些更改之后,它被正确编译和运行。

谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4941648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档