diff --git a/modules/text/CMakeLists.txt b/modules/text/CMakeLists.txt index 5619dd41c..30bd2d823 100644 --- a/modules/text/CMakeLists.txt +++ b/modules/text/CMakeLists.txt @@ -1,23 +1,20 @@ set(the_description "Text Detection and Recognition") -ocv_define_module(text opencv_ml opencv_imgproc opencv_core opencv_features2d opencv_dnn OPTIONAL opencv_highgui WRAP python java) +set(__extra_deps "") +if(DEBUG_opencv_text) + list(APPEND __extra_deps PRIVATE opencv_highgui) +endif() + +ocv_define_module(text + opencv_ml opencv_imgproc opencv_core opencv_features2d opencv_dnn + ${__extra_deps} + WRAP + python + java +) -if(NOT CMAKE_CROSSCOMPILING OR OPENCV_FIND_TESSERACT) - find_package(Tesseract QUIET) # Prefer CMake's standard locations (including Tesseract_DIR) - if(NOT Tesseract_FOUND) - include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindTesseract.cmake") # OpenCV's fallback - endif() - if(Tesseract_FOUND) - if(Tesseract_VERSION) - message(STATUS "Tesseract: YES (ver ${Tesseract_VERSION})") - else() - message(STATUS "Tesseract: YES (ver unknown)") - endif() - set(HAVE_TESSERACT 1) - ocv_include_directories(${Tesseract_INCLUDE_DIRS}) - ocv_target_link_libraries(${the_module} ${Tesseract_LIBRARIES}) - else() - message(STATUS "Tesseract: NO") - endif() +if(HAVE_TESSERACT) + ocv_include_directories(${Tesseract_INCLUDE_DIRS}) + ocv_target_link_libraries(${the_module} ${Tesseract_LIBRARIES}) endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/text_config.hpp.in diff --git a/modules/text/cmake/checks/tesseract_test.cpp b/modules/text/cmake/checks/tesseract_test.cpp new file mode 100644 index 000000000..b27d425af --- /dev/null +++ b/modules/text/cmake/checks/tesseract_test.cpp @@ -0,0 +1,12 @@ +#if !defined(USE_STD_NAMESPACE) +#define USE_STD_NAMESPACE +#endif +#include +#include + +static void test() +{ + tesseract::TessBaseAPI tess; +} + +int main() { test(); return 0; } diff --git a/modules/text/cmake/init.cmake b/modules/text/cmake/init.cmake new file mode 100644 index 000000000..e6df91776 --- /dev/null +++ b/modules/text/cmake/init.cmake @@ -0,0 +1,39 @@ +OCV_OPTION(WITH_TESSERACT "Include Tesseract OCR library support" (NOT CMAKE_CROSSCOMPILING) + VERIFY HAVE_TESSERACT) + +if(NOT HAVE_TESSERACT + AND (WITH_TESSERACT OR OPENCV_FIND_TESSERACT) +) + if(NOT Tesseract_FOUND) + find_package(Tesseract QUIET) # Prefer CMake's standard locations (including Tesseract_DIR) + endif() + if(NOT Tesseract_FOUND) + include("${CMAKE_CURRENT_LIST_DIR}/FindTesseract.cmake") # OpenCV's fallback + endif() + if(Tesseract_FOUND) + if(Tesseract_VERSION) + message(STATUS "Tesseract: YES (ver ${Tesseract_VERSION})") + else() + message(STATUS "Tesseract: YES (ver unknown)") + endif() + if(NOT ENABLE_CXX11 AND NOT OPENCV_SKIP_TESSERACT_BUILD_CHECK) + try_compile(__VALID_TESSERACT + "${OpenCV_BINARY_DIR}/cmake_check/tesseract" + "${CMAKE_CURRENT_LIST_DIR}/checks/tesseract_test.cpp" + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${Tesseract_INCLUDE_DIRS}" + LINK_LIBRARIES ${Tesseract_LIBRARIES} + OUTPUT_VARIABLE TRY_OUT + ) + if(NOT __VALID_TESSERACT) + if(OPENCV_DEBUG_TESSERACT_BUILD) + message(STATUS "${TRY_OUT}") + endif() + message(STATUS "Can't use Tesseract (details: https://github.com/opencv/opencv_contrib/pull/2220)") + return() + endif() + endif() + set(HAVE_TESSERACT 1) + else() + message(STATUS "Tesseract: NO") + endif() +endif()