2013-01-02 84 views
0

这可能是一个noob问题,但我真的想弄明白:我有我的C++项目使用其他库(例如log4cplus和getopt_pp)。我在eclipse下开发它,现在我使用autotools对它进行配置,以便使用makefile和配置脚本来分发它,以确保每个人都可以编译它。 我的问题是:我怎样才能获得那个调用./configure./make会自动编译&在最终用户系统中安装静态库?C++ makefile编译依赖库

  • 这样做的最佳方法是什么?
  • 什么是安装库的最佳路径?

回答

1

最好的方法是不要这样做。相反,您应该记录(在安装文档中)您的应用程序/库依赖于某些其他库(并且最好也是您测试它的哪个版本),并且您的脚本应该检查这些依赖关系的存在。

的原因是:

  • 在有些情况下,例如图书馆应设系统之间的巨大差异。你的脚本永远不会为每个人正确做到。
  • 用户可能已经安装了兼容版本,可能更愿意使用该版本,而不是可能与软件捆绑在一起的版本。
  • 现在,将这样的库静态地链接到应用程序中实际上非常罕见。所有主要编译器都默认为动态链接。这使得用户更有可能已经安装了这些库的版本。
0

如果您将库与您的项目一起运输(而不是独立分发并要求用户确保安装它们),那么您可能希望将这些库放在您自己的目录中项目,并在你的configure.ac确保它通过增加Makefile输出目标,以AC_OUTPUT是知道这些子目录,即像

AC_OUTPUT(Makefile log4cplus/Makefile getopt_pp/Makefile yourprogramsrc/Makefile)

然后在根级别Makefile.am,让它知道你的新子目录,即

SUBDIRS=log4cplus getopt_pp yourprogramsrc

然后确保你的包括标志和连接器选项都指向你,包括库设置正确。