我正在尝试从 Autotools (Automake/Libtool) 构建一个库
我的目录结构是:
src/MyLib/*some_sources*.cpp/.h + a Makefile.am
src/MyLib/Parsers/*some_other_sources.cpp/.h Makefile.am
当我将所有源文件放在同一目录中时(因此,没有“Parsers”子目录),一切正常。(编译,然后从其他程序链接)
但是当我尝试我的“理想结构”(基本源文件夹+“解析器”子目录)时,当我尝试使用库编译程序时出现链接错误:
<< usr/local/lib/mylib.so: undefined reference to <a function from "/Parsers" subdir > >>
似乎 Libtool 在编译期间没有静态链接我的子目录“Parsers”(也许将其视为外部共享库?)
这是我的基础“Makefile.am”:
lib_LTLIBRARIES = mylib.la
SUBDIRS = Parsers .
mylib_la_SOURCES = <base_dir_source_files>
还有我在 Parsers subdir 中的“Makefile.am”:
mylib_la_SOURCES = <parsers_dir_source_files>
当然,在创建“Parser”子目录之后,我 libtoolize-d,autoreconf-ed allthing。
预先感谢您的帮助。