如何在MSYS / MINGW上使用autoconf来创建配置脚本?

问题描述

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

Ahmad @ AHMADTANHA /c/itpp-4.3.1 $ autoconf configure.ac.in /c/MinGW/bin/autoconf-2.68:第501行:/mingw/bin/autom4te-2.68:没有此类文件或目录 /c/MinGW/bin/autoconf-2.68:第501行:exec:/mingw/bin/autom4te-2.68:无法执行:没有此类文件或目录

解决方法

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

退出外壳端,再次将其打开。现在您应该有了一个工作环境。

,

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

通常,如果可以通过使用更现代的构建系统(例如CMake或Ninja)来避免使用配置工具,则应这样做。另外,CMake支持忍者,它比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"