我写过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上构建共享库,同时仍在其他平台上构建它们?
答案 0 :(得分:3)
我不确定$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
之前,您的原始想法可能仍然有效,但此方法会覆盖任何配置选项。