2013-10-26 33 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变量不对应于已知对象的警告。