我写了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/