2011-02-09 76 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" 
作出上述改變後

,它編譯和運行正確。

謝謝!

相關問題