2014-01-31 230 views
4

我有使用SQLite一個Qt項目庫,因此我有以下目錄結構:QMAKE:引用使用相對路徑

C:\Workspace\MyProject\MyProject.pro 
C:\Workspace\MyProject\sqlite3\sqlite3.lib 

使用絕對路徑添加sqlite3.lib正常工作:

LIBS += -L"c:/Workspace/MyProject/sqlite3" -lsqlite3 

但我不能讓它與相對路徑一起工作。我試着用:

LIBS += -L"sqlite3" -lsqlite3 

但是失敗:

:-1: error: LNK1104: cannot open file 'sqlite3\sqlite3.lib' 

我試過,但LIBS += -L"../sqlite3"甚至LIBS += -L"../../sqlite3",但是這也不能工作。

我使用MSVC 2008編譯器工具鏈。

+0

因爲它可能從不同的目錄下建,指向項目目錄的相對路徑應該是'$$ PWD/...'('PWD'是絕對路徑目錄與當前處理'.pro'文件)。但是這並不能解釋爲什麼不搜索自定義相關庫路徑。 – hluk

+0

那麼,這看起來像一個合法的答案,你可以發佈它嗎? – sashoalm

+0

完成,但我真的不知道編譯器/鏈接器如何處理相對路徑。 – hluk

回答

7

因爲它可能來自不同的目錄下的項目目錄下建,指向項目目錄的相對路徑應該與$$PWD/PWD QMAKE變量包含當前處理*.pro文件目錄的絕對路徑)前綴。

你的行會看起來像:

LIBS += -L"$$PWD/sqlite3" -lsqlite3