【发布时间】:2021-01-30 15:59:51
【问题描述】:
我正在尝试编译一个需要 Tesseract 和 OpenCV 的 cmake 项目。一切都在 Ubuntu 20.04 中完成。
但我一直在努力编译它。
我从源代码编译了 Tesseract,并且浏览了几篇 SO 帖子和我在网上找到的任何文章,但仍然没有运气。我注意到 Tesseract 不会在/usr/local/lib/cmake/ 下导出.cmake 文件,所以你不能这样做find_package(Tesseract x.x.x REQUIRED)。
环顾四周,我发现人们建议这样做:
find_package(PkgConfig REQUIRED)
pkg_search_module(TESSERACT REQUIRED tesseract)
pkg_search_module(LEPTONICA REQUIRED lept)
include_directories(${TESSERACT_INCLUDE_DIRS})
include_directories(${LEPTONICA_INCLUDE_DIRS})
link_directories( ${TESSERACT_LIBRARY_DIRS} )
link_directories( ${LEPTONICA_LIBRARY_DIRS} )
这似乎找到了一些东西。在执行pkg_search_module(TESSERACT REQUIRED tesseract) 之后,我可以看到TESSERACT_INCLUDE_DIRS 填充了这个列表:/usr/local/include;/usr/include/leptonica。尽管 Tesseract 头文件位于/usr/local/include/tesseract/ 下,但还是会这样做。无论如何,运行cmake 不会出错。
但是,之后运行make 只会添加一些奇怪的错误
error: 'l_int32' does not name a type; did you mean 'u_int32_t'?
54 | l_int32 num; /*!< number of unknowns */
| ^~~~~~~
到我的项目。即使我什至没有包含任何 Tesseract 或 Leptonica 的头文件。
This 帖子是唯一似乎接近解决方案的帖子。
我也尝试了以下方法但没有成功:
- 直接使用添加 Tesseract 和 Leptonica 头文件的路径
include_directories(/usr/local/include/tesseract/)
include_directories(/usr/local/include/leptonica/)
- 还尝试制作自己的
.cmake文件,以便我可以直接使用find_package(Tesseract 4.1.1 REQUIRED)。 - 我什至尝试从源代码编译 Leptonica 库,但这无济于事。
- 阅读 Tesseract 项目本身的 cmake file 也没有对此有所了解。
【问题讨论】: