2011-02-09 87 views
1

我有我创建的类文件(标题和cpp),我想在我的main.cpp文件中使用。我生成的qmake项目文件(从我的main.cpp的当前目录),并添加页眉和CPP有:Qmake项目文件

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

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

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

+0

你为什么要用报价? – Shinnok 2011-02-09 06:57:12

+0

我在我的路径中有空格,qt示例提示它是解决空间问题的最佳方式。他们表示使用“\”表示空间已折旧。 – shawalli 2011-02-10 04:36:55

回答

4

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

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

如果该类不是项目的一部分,那么你应该编译为一个库,然后使用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 
0

我结束从@Sergey Tachenov那里得到一点点帮助。我通过使用“../”将其从绝对路径更改为相对路径。

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

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

#include "../src/classfile.h" 
作出上述改变后

,它编译和运行正确。

谢谢!

相关问题