c++ - 通过一次安装生成静态库和可执行文件(autoconf)

标签 c++ static autoconf automake

我知道如何构建项目或如何使用 autoconf 创建库。

我想要实现的是生成一个静态库并使用该库在单个配置/制作/make install 运行中构建项目。

我希望将一些源文件放入库中,并使用该库来编译其余文件。

如何修改 makefile.am 文件和 configure.ac 才能使其正常工作?

最佳答案

最简单的方法是使用 libtool 和 automake“便利库”。 这是一个最小的例子 对于 Makefile.am

lib_LTLIBRARIES = libExample.la 
libExample_la_SOURCES = lfile1.C 
bin_PROGRAMS = test
test_SOURCES = tfile1.C 
test_LDADD = libExample.la 

对于configure.ac

AC_INIT(test, 1.0)
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([foreign])
AC_PROG_CXX
AC_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
AC_LTDL_DLLIB
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

这将在目录 .libs 中构建静态和动态库 libExample。
如果您只想要一个静态库,可以将 --disable-shared 传递给 configure

关于c++ - 通过一次安装生成静态库和可执行文件(autoconf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1063180/

相关文章:

redirect - Nginx 子域重定向到静态 URL

gcc - 为什么 ARM 的交叉编译在 ./configure 中失败?

linux - 将二进制文件安装到/bin、/sbin、/usr/bin 和/usr/sbin,与 --prefix 和 DESTDIR 交互

autotools - 使用自动工具在一个中心位置维护版本信息

c++ - 为什么我不能用 std::unordered_map 替换 std::map

c++ - 如何在编译时选择可能的选项来确定函数的返回值

java - 处理共享数据

c++ - 为什么我必须把这个函数静态化

c++ - 我有一个预处理的 C/C++ 源文件 (cacti.i)。如何从这个 .i 文件生成可执行二进制文件,以便我可以像 ./cacti 一样运行它?

c++ - 如何在 C++ 中用大小初始化 3 维 vector