【问题标题】:Automake ignores multiple source files for building a libraryAutomake 忽略用于构建库的多个源文件
【发布时间】:2013-10-26 11:49:24
【问题描述】:

我正在尝试使用 autotools 创建一个静态库,但是它只采用与库同名的 cpp 文件并忽略其他源文件。

Makefile.am

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

automake 和 make 不会抱怨,但它只会编译 mylib.cpp 并将其转换为库。当我尝试链接它时,我会收到诸如

之类的错误
dep1.cpp undefined reference to dep1::method_name

请帮忙。几个小时以来,我一直在用头敲击键盘。没有关于制作库的教程。我能找到的唯一自动工具文档是 5 行 hello world 示例或 5000 页零示例或上下文的书籍。

【问题讨论】:

  • 您能发布您的系统执行的实际链接命令吗?如果您已将 Automake 置于安静模式,请尝试 make V=1 查看详细信息。
  • 我总是建议通过 CXX 变量传递“方言”选项:例如,CXX="g++ -std=c++11"CXX="clang++ -std=c++11 -stdlib=libc++" - 离开 CXXFLAGS 以获得优化级别、架构标志等。

标签: static-libraries autotools


【解决方案1】:

您错误地命名了 _SOURCES 变量。你想要:

libmylib_a_SOURCES = ...

请参阅 Automake 手册中标题为“构建库”的节点...这是第一个示例。

Automake 没有就与已知对象不对应的 _SOURCES 变量发出警告,这让我有点惊讶。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 2016-01-02
    • 1970-01-01
    相关资源
    最近更新 更多