cygwin - 有条件地禁用共享库构建

标签 cygwin autotools autoconf libtool

我写了a C library that builds using Libtool ,我只想在 Cygwin 上构建静态库。为此,我放置了

if test "$target_os" = "cygwin"; then
    AC_DISABLE_SHARED
fi

在我的configure.ac中。

这确实会禁用在 Cygwin 上构建共享库;然而,它也禁止在其他地方构建它们。我认为这是因为扩展 AC_DISABLE_SHARED 会导致一些不幸的副作用。

如何使用 Libtool 避免在 Cygwin 上构建共享库,同时仍在其他平台上构建它们?

最佳答案

我不确定 $target_os 是您想要的。 $host_os 是将运行代码的系统的名称。 “目标”三元组很少在构建编译器/工具链之外使用。

即使配置脚本可能仍然对共享库说是/启用,您也可以通过设置 enable_shared|static 变量来覆盖结果。

AC_CANONICAL_HOST
...
LT_INIT

case $host_os in
  cygwin*)
    AC_MSG_RESULT([explicitly disabled shared libraries for $host])
    enable_shared=no; enable_static=yes ;;
esac

这些变量没有记录,所以它技术上是一种黑客行为 - 但它的行为基本上与任何其他AC_ARG_ENABLE选项一样。如果您最初的想法出现在 LT_INIT 之前,它可能仍然有效,但此方法会覆盖所有配置选项。

关于cygwin - 有条件地禁用共享库构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21420574/

相关文章:

usb - 如何在 Cygwin 中使用 COM 和 USB 端口?

cygwin - TaskMemoryManager 被禁用

c - 如何在 Autotools 中打包可执行文件及其依赖的库

Autotools:top_srcdir 和 abs_top_srcdir 为空

static-libraries - 如何使 PKG_CHECK_MODULES 与静态库一起工作?

git - 为什么 Git 在 Cygwin 中与 Windows 7 终端有不同的配置?

python - 在 Cygwin 上安装新版本的 Python 不会安装 Pip?

c - 添加 Makefile.in a -DVARIABLE linux

c - 在使用 AM_LDFLAGS 的项目的 makefile 中编写依赖关系规则

c# - libtool:您应该使用 libtool 2.4.6 中的宏重新创建 aclocal.m4