Qmake项目文件

时间:2011-02-09 05:29:28

标签: c++ qt makefile

我有一个类文件(header和cpp),我想在main.cpp文件中使用它。我生成了一个qmake项目文件(来自我的main.cpp的当前目录)并添加了标题和cpp:

HEADERS += $$quote(/home/myusername/projects/src/myclass.h)
SOURCES += $$quote(/home/myusername/projects/src/myclass.cpp)
SOURCES += main.cpp

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

我觉得我犯了一个非常基本的错误,但我似乎无法弄明白。

2 个答案:

答案 0 :(得分:4)

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

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

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

qmake INCLUDEPATH+=/path/to/the/header LIBS+=-L/path/to/the/library

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

LIBS += -llibraryname

然后,您可以将您的课程列为#include <myclass.h>,请注意<>语法。

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

unix { # default path for the Unix systems
  isEmpty(MYLIB_PATH): MYLIB_PATH = /usr/local
}
INCLUDEPATH += $$MYLIB_PATH/include
LIBS += -L$$MYLIB_PATH/lib

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

qmake MYLIB_PATH=/home/myusername/mylib

答案 1 :(得分:0)

我最终在@Sergey Tachenov的帮助下搞清楚了。我使用“../”将它从绝对路径更改为相对路径。

HEADERS += ../src/classfile.h
SOURCES += ../src/classfile.cpp
SOURCES += main.cpp

我还修改了main.cpp包含文件,使其为

#include "../src/classfile.h"

进行这些更改后,编译并正确运行。

谢谢!