2013-04-22 42 views
0

目前定製庫搜索路徑,包括在我的項目回購自定義靜態庫,我需要告訴編譯器庫的完整路徑,如GNU製作:在Makefile中

$(CXX) $(CXXFLAGS) -o [email protected] $^ ../lib/libnt.a $(LDFLAGS) 

,但其實我是想添加自定義搜索路徑,以便我可以編寫

$(CXX) $(CXXFLAGS) -o [email protected] $^ -lnt $(LDFLAGS) 

改爲。那可能嗎?我試圖指定PATH環境變量,但這不起作用。

+0

使用'-L'(注意大寫)來指定搜索庫的目錄。您可以給'-L'多次搜索多個目錄。他們將按照他們的順序進行搜索。 – MadScientist 2013-04-22 17:26:53

回答

3

PATH環境變量是爲shell,我不明白爲什麼你甚至認爲它會工作。使用-L鏈接器標誌來代替:

LDFLAGS = ... stuff you put here ... -L/search/path/for/custom/libs 
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
            This part 
+1

這不是'PATH'是爲了shell。就是說'PATH'用於查找可以作爲命令運行的可執行文件,無論是從shell還是其他可執行文件或腳本(Python,Perl等)在嘗試運行程序時都使用'PATH'。但是,'PATH'永遠不會用於查找不是程序的東西,而是包含庫。 – MadScientist 2013-04-22 17:25:56

+0

我的不好。我應該仔細閱讀鏈接器選項文檔。 – 4ae1e1 2013-04-22 17:40:37

+0

@KevinSayHi不客氣。邑,谷歌有點「使用GCC」等。這肯定會有幫助的(這就是我學會使用它的原因)。最好的是大多數的標誌也適用於'clang'。 – 2013-04-22 17:41:26

0

您可以只使用一個簡單的make變種確定指標。

LIBLDIR = ../lib/ 
# 
# 
# 
$(CXX) $(CXXFLAGS) -o [email protected] $^ -L$(LIBLDIR) -lnt $(LDFLAGS)