2013-02-12 34 views
1

我試圖讓單元測試++項目中的合作下,該目錄樹的相對路徑:單元測試++和g ++ - 圖書館

Project/ 
|-- src/ 
|-- test/ 
| |-- test.cpp 
|-- unittest-cpp/ 
| |-- UnitTest++/ 
|  |-- libUnitTest++.a 
|  |-- src/ 
|   |-- UnitTest++.h 
|-- Makefile 

我試圖用克至++編譯,同時在項目目錄。我的test.cpp文件包含了UnitTest ++入門代碼。

我試過如下:

g++ -Lunittest-cpp/UnitTest++/ -lUnitTest++ -Iunittest-cpp/UnitTest++/src/ \ 
test/test.cpp -o Test 

如果我沒理解好,-L是給路徑靜態庫。 -l(小L)用於庫名,-I(Capital i)用於包含路徑。

我得到兩個不同的結果。它要麼告訴我它無法在/ usr/bin /中找到lib或者它告訴我有對unittest :: *的未定義引用。

是因爲我給了一個它無法編譯的庫的相對路徑嗎?我是通過多個目錄使用g ++的新手,我試圖理解它是如何工作的,然後才能在我的Makefile中工作。

[編輯]:鏈接庫和頭之前,必須給出test/test.cpp參數。所以,這工作:

g++ test/test.cpp -Lunittest-cpp/UnitTest++ -lUnitTest++ -Iunittest-cpp/UnitTest++/src -o Test 

回答

3

要編譯的文件(在此上下文test.cpp)必須先提供其依賴項編譯時。這工作:

g++ test/test.cpp -Lunittest-cpp/UnitTest++ -lUnitTest++ -Iunittest-cpp/UnitTest++/src -o Test