0

这可能是一个菜鸟问题,但我真的很想弄清楚:我的 C++ 项目使用了其他库(例如 log4cplus 和 getopt_pp)。我在eclipse下开发它,现在我用autotools配置它,用makefile和configure脚本分发它,以确保每个人都可以编译它。我的问题是:我怎样才能获得该调用./configure./make将自动编译和安装最终用户系统中的静态库?

  • 做这个的最好方式是什么?
  • 安装库的最佳路径是什么?
4

2 回答 2

1

最好的方法是根本不这样做。相反,您应该记录(在安装文档中)您的应用程序/库依赖于其他一些库(最好还有您测试它的版本),并且您的configure脚本应该检查这些依赖项的存在。

原因是:

  • 此类库应位于的系统之间存在巨大差异。你的脚本永远不会为每个人正确地做到这一点。
  • 用户可能已经安装了兼容版本,并且可能更喜欢使用该版本而不是与您的软件捆绑在一起的版本。
  • 如今,将此类库静态链接到应用程序中实际上非常罕见。所有主要编译器都默认使用动态链接。这使得用户更有可能已经安装了这些库的版本。
于 2013-01-02T17:58:57.033 回答
0

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

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

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

SUBDIRS=log4cplus getopt_pp yourprogramsrc

然后确保您的包含标志和链接器标志设置正确,以指向您包含的库。

于 2013-01-02T18:00:19.013 回答