2013-10-26 29 views
0

我試圖用autotools創建一個靜態庫,但它只接受具有相同名稱的庫的cpp文件並忽略其他源文件。Automake忽略用於構建庫的多個源文件

Makefile.am

AM_CXXFLAGS=-std=c++11 
lib_LIBRARIES = mylib.a 
mylib_a_SOURCES = dep1.cpp dep2.cpp mylib.cpp 

automake和賺不抱怨,但只編譯mylib.cpp並把它變成一個庫。當我嘗試鏈接它時,我收到錯誤,如

dep1.cpp undefined reference to dep1::method_name 

請幫忙。幾個小時以來,我一直在敲擊鍵盤。沒有製作圖書館的教程。我能找到的唯一的autotool文檔是5行hello world例子或5000頁的書籍,裏面沒有例子或上下文。

+1

您可以發佈您的系統執行的實際鏈接命令嗎?如果您已將Automake置於安靜模式,請嘗試使'V = 1'來查看細節。 – ptomato

+0

我總是推薦通過'CXX'變量傳遞'dialect'選項:例如'CXX =「g ++ -std = C++ 11」'或'CXX =「鏗鏘聲++ -std = C++ 11 -stdlib = libC++ 「' - 爲優化級別,架構標誌等離開'CXXFLAGS'。 –

回答

1

您正在命名_SOURCES變量不正確。您想要:

libmylib_a_SOURCES = ... 

請參閱Automake手冊中標題爲「構建庫」的節點...這是第一個示例中的節點。

我有點驚訝,Automake沒有給你一個關於_SOURCES變量不對應於已知對象的警告。