【问题标题】:How can I make a configure script using autoconf on MSYS/MINGW?如何在 MSYS/MINGW 上使用 autoconf 制作配置脚本?
【发布时间】:2021-02-03 16:59:52
【问题描述】:

我正在尝试在 Windows 10 中使用 IT++ 库。为此,我需要使用 MSYS 上的 autoconf 从 IT++ 库中提供的“configure.ac.in”文件创建一个“配置”脚本。 我遇到了这些错误:

艾哈迈德@AHMADTANHA /c/itpp-4.3.1 $ autoconf 配置.ac.in /c/MinGW/bin/autoconf-2.68:第 501 行:/mingw/bin/autom4te-2.68:没有这样的文件或目录 /c/MinGW/bin/autoconf-2.68: line 501: exec: /mingw/bin/autom4te-2.68: cannot execute: No such file or directory

【问题讨论】:

    标签: c++ mingw configure autoconf msys


    【解决方案1】:

    MSYS 旧且慢,请使用 MSYS2。你可以在这里下载: https://sourceforge.net/projects/msys2/files/Base/

    要使用它,首先提取文件(例如msys2-base-x86_64-20200903.tar.xz),然后在msys64(或msys32)文件夹下运行autorebasebase1st.bat并重新启动。

    重启后启动mingw64.exe(或mingw32.exe)并运行:

    pacman -Syu --noconfirm
    pacman -S --noconfirm git wget tar gzip autoconf automake make libtool patch unzip xz bison flex pkg-config
    pacman -S --noconfirm mingw-w64-x86_64-gcc
    

    (对于 32 位,最后一行应为 pacman -S --noconfirm mingw-w64-i686-gcc

    退出shell,再次打开它。现在你应该有一个工作环境了。

    【讨论】:

    • 感谢您对我的查询的输入!我按照您建议的步骤进行操作,但是在 MSYS2 中运行以下命令后遇到了这些错误: $ autoconf configure.ac.in " >&6;} configure.ac.in:28: error: possible undefined macro: AM_INIT_AUTOMAKE If this token其他是合法的,请使用 m4_pattern_allow。请参阅 Autoconf 文档。configure.ac.in:50:错误:可能未定义宏:AC_DISABLE_SHARED configure.ac.in:51:错误:可能未定义宏:AC_ENABLE_STATIC 58:错误:可能未定义的宏:AC_ENABLE_SHARED
    【解决方案2】:

    当我查看 IT++ 的源代码时,我没有看到文件 configure.acconfigure.am,只有 configure.ac.in。但是有一个文件CMakeLists.txt 这意味着该项目可能应该使用 CMake 进行配置。

    作为一般规则,如果您可以通过使用更现代的构建系统(如 CMake 或 Ninja)来避免配置工具,那么您应该这样做。另外,CMake 支持 Ninja,比make 快很多。

    所以我尝试像这样构建静态和与 CMake 共享的 IT++,没有任何问题:

    INSTALLPREFIX=/usr/local
    cmake.exe -Wno-dev -GNinja -DCMAKE_INSTALL_PREFIX:PATH=$INSTALLPREFIX -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DITPP_SHARED_LIB:BOOL=OFF -DHTML_DOCS:BOOL=OFF -S. -Bbuild_static &&
    ninja -Cbuild_static install/strip &&
    cmake.exe -Wno-dev -GNinja -DCMAKE_INSTALL_PREFIX:PATH=$INSTALLPREFIX -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=ON -DITPP_SHARED_LIB:BOOL=ON -DHTML_DOCS:BOOL=OFF -S. -Bbuild_shared &&
    ninja -Cbuild_shared install/strip &&
    echo Success
    

    如果由于某种原因您仍想使用make 而不是ninja,您可以将-GNinja 替换为-G"MSYS Makefiles"

    【讨论】:

    • 请问,这几行代码是在哪里写的?!我的意思是您使用哪个工作空间来构建 IT++(MSYS2 或其他环境)?
    • MSYS2 在我的 PATH 中带有 cmake.exe 和 ninja.exe(您可以分别从 cmake.org/downloadgithub.com/ninja-build/ninja/releases 下载它们)。
    猜你喜欢
    • 1970-01-01
    • 2014-03-27
    • 2021-02-09
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    相关资源
    最近更新 更多