我正在尝试修补configure.in
文件,以便为某个包启用交叉编译。到目前为止,我只是修补AC_TRY_RUN
宏,以使它们能够跳过已编译代码的执行,并使用包含测试结果的预定义变量,该变量应该先验运行。
在文件的开头,我插入了这样的行:
dnl -- The following block is used to allow cross-compilation:
CROSSCTEST00=yes dnl -- the result of test 0
CROSSCTEST01=yes dnl -- the result of test 1
...
CROSSCTESTNN=yes dnl -- the result of test N
dnl --
dnl This is where this file started previously:
AC_INIT(pl-wam.c)
AC_PREREQ([2.66])
AC_CONFIG_HEADER(config.h)
AC_SUBST(COFLAGS)
AC_SUBST(CWFLAGS)
...
然后,我正在使用AC_TRY_RUN
的第四个参数:
AC_TRY_RUN([ // piece of C code ],
[actions if exit(0)],
[actions if exit(1)],
if test "x$CROSSCTEST00" = xyes; then
dnl same actions if exit(0)
else
dnl same actions if exit(1)
fi)
但它不起作用。尽管$ CROSSCTEST为yes
,但test ...
永远不会成立。我也尝试过另一种方法:
AC_TRY_RUN([ // piece of C code ],
[actions if exit(0)],
[actions if exit(1)],
AS_IF([test "x$CROSSCTEST00" = xyes],
[same actions if exit(0)],
[dnl same actions if exit(1)]))
......它也不起作用。我在这里错过了什么吗?您是否认为有更好的方法来修补configure.in
以启用交叉编译?
答案 0 :(得分:1)
在AC_INIT之前写入的configure.ac
或configure.in
中的行不会进入配置脚本。 (查看生成的配置脚本以查看您的分配是否已完成。)您可以将分配移至AC_INIT调用之后。但是对AC_INIT的调用非常过时,使用这样一个过时的调用时需要autoconf 2.66似乎很奇怪。 (名称configure.in
也非常老式)。您可能想要考虑浏览文件并寻找过时的版本,因为它可能需要彻底检查。 (并且肯定重命名文件configure.ac
)