【发布时间】:2018-11-28 13:55:03
【问题描述】:
我拼命地试图在有一些限制的 Windows 机器上编译 Tesseract-ocr (4.0)。
- 我们正在做多平台:必须可以进行自动编译(命令行)
- 我们正在使用特定的 3rd 方库:编译必须接受其大部分依赖项的自定义路径/库
- 我们已经将大部分 3rd 方库用于代码的其他部分:编译时不得重新编译它们(因此,没有 cppan)
- Leptonica 是使用我们特殊的 3rdparty(ZLib、LibPng ..)构建的
- 我们的项目必须在这些特定的 3rdparty 旁边“包含”tesseract
问题:
我在为 Tesseract 指定自定义路径时遇到了很大的问题。 在 Unix(CentOS、Ubuntu 16/18、Debian 8/9 ..)下,我可以使用 autogen autoconf autoheaders 工具实现我的目标强> pkg-config。
在 Windows 下,autoconf-archive 和 pkg-config 不可用(根据我的尝试);使 autoconf 不可用。 我既无法使用 CMake 进行编译,也无法为 Leptonica 指定自定义路径(即使在为 Leptonica 编写了新的 pkgconfig 之后也是如此)。
我尝试过的事情:
- 使用 MinGW 和自动配置
- 手动安装 pkg-config
- 用 autoconf-archive .m4 作弊到 aclocal
- 使用 cppan 创建 VisualStudio 项目并进行修改
- 告诉 CMake 在别处搜索 3rdparty 的各种方法
适用于 Linux 的东西:
- 针对自定义编译的 Leptonica 修改 PKGConfig 的 Autoconf(--with-extra-libraries PKG_CONFIG_PATH CPPFLAGS LDFLAGS)
我没有尝试过的事情:
- 在机器上安装 Leptonica(不是重点)
- 重写 CMakeFiles
- 未知的解决方案?
可能的解决方案
- MinGW (Windows) 和 pkg-config autoconf-archive
- 告诉 CMake Leptonica 自定义路径的未知方式
- 没有 cppan 的 VisualStudio 项目
- 你的?
感谢您的关注。
编辑 1
通过尝试各种手动安装 pkg-config 的方法,Autoconf 似乎没有意识到它的存在。这个错误是关于 pkg-config 缺少包 (How to install pkg config in windows?)。
CPPAN 是 Visual Studio 项目的重要组成部分,我不知道如何将它们分开。
我通常告诉 configure 寻找带有参数 --with-extra-libraries 和 PKG_CONFIG_PATH 的 leptonica 包。 然而,CMake 使用“宏”find_package(Leptonica $PATH CONFIG REQUIRED)。通过稍微看一下,我(也许)能够使用 CMAKE_PREFIX_PATH、CMAKE_MODULE_PATH、Leptonica_DIR 指定它的路径。由于缺少配置文件(LeptonicaConfig.cmake 或 leptonica-config.cmake),编译仍然不成功。
构建后,我将这些变量指向 leptonica 文件夹的各个文件夹。 有关信息,我用它的配置构建了 Leptonica:
bash configure --enable-shared=false --without-giflib --without-libwebp --without-libopenjpeg LDFLAGS="-LPATH/TO/ZLIB -LPATH/TO/LIBPNG .." CPPFLAGS="-IPATH/TO/ZLIB/INCLUDE ..."
但是,我无法找到这些文件(在 LeptonicaDir/cmake/template 下看到 LeptonicaConfig.cmake.in)
我希望我回答了你的问题。如果您需要更多详细信息,请告诉我。
【问题讨论】:
-
欢迎来到 Stack Overflow!虽然您详细描述了您的问题领域,但您的问题似乎“过于宽泛”:您向我们询问可能的方法,但是,我猜,任何建议的方法可以工作。你没有让其中任何一个工作......但你没有描述问题的细节。例如,“我尝试过的事情:......告诉 CMake 在其他地方搜索 3rdparty 的各种方式”。您究竟尝试过什么?您遇到了什么确切问题(例如错误消息)?
-
KDE Craft 是一个准备编译环境的系统,并具有用于构建大量包的配方(称为蓝图)。在此基础上构建可能是有意义的。至少您可以毫无问题地找到第 3 方包,并且它们已经出现在 Craft 的蓝图树中。
-
@Tsyvarev 好的。我试图编辑我最初的问题以获得详细的答复。谢谢
-
@arrowd 我查看了它,但我认为它不符合我的先决条件“我们已经将大多数 3rd 方库用于代码的其他部分:编译不能重新编译它们”。谢谢你的建议。
标签: windows cmake compilation mingw tesseract