# Qt6 if(NOT Qt6_DIR AND NOT ENV{Qt6_DIR} AND NOT CMAKE_PREFIX_PATH) message(WARNING "Qt6 not found in environment. Please set CMAKE_PREFIX_PATH or Qt6_DIR.") endif() find_package(Qt6 REQUIRED COMPONENTS Widgets) # OpenCV if(DEFINED ENV{OpenCV_DIR}) set(OpenCV_DIR $ENV{OpenCV_DIR}) message(STATUS "Using OpenCV_DIR from environment: ${OpenCV_DIR}") elseif(NOT OpenCV_DIR) message(STATUS "OpenCV_DIR not set, trying to find OpenCV in standard locations...") set(LEGACY_OPENCV_PATH "D:/enviroments/OPencv4.55/OPencv4.55_MSVC/opencv/build/x64/vc15/lib") if(EXISTS ${LEGACY_OPENCV_PATH}) set(OpenCV_DIR ${LEGACY_OPENCV_PATH}) message(STATUS "Found legacy OpenCV path: ${OpenCV_DIR}") endif() endif() find_package(OpenCV REQUIRED) message(STATUS "OpenCV found: ${OpenCV_VERSION}") message(STATUS "OpenCV libraries: ${OpenCV_LIBS}") message(STATUS "OpenCV include dirs: ${OpenCV_INCLUDE_DIRS}") # Open3D # Open3D if(DEFINED ENV{Open3D_DIR}) set(Open3D_DIR $ENV{Open3D_DIR}) message(STATUS "Using Open3D_DIR from environment: ${Open3D_DIR}") elseif(NOT Open3D_DIR) # Default to 0.18 Release set(DEFAULT_OPEN3D_PATH "D:/enviroments/Open3d/open3d-devel-windows-amd64-0.18.0-release/CMake") # Debug path: D:/enviroments/Open3d/open3d-devel-windows-amd64-0.18.0-debug/CMake if(EXISTS ${DEFAULT_OPEN3D_PATH}) set(Open3D_DIR ${DEFAULT_OPEN3D_PATH}) message(STATUS "Using default Open3D path: ${Open3D_DIR}") endif() endif() find_package(Open3D REQUIRED) message(STATUS "Open3D found: ${Open3D_VERSION}") message(STATUS "Open3D DIR: ${Open3D_DIR}") # Find Open3D DLL and dependencies (TBB) # Adjust ROOT calculation based on where Config is found. get_filename_component(DIR_NAME "${Open3D_DIR}" NAME) if("${DIR_NAME}" STREQUAL "CMake") # Structure: root/CMake/Open3DConfig.cmake -> root is up one level get_filename_component(Open3D_ROOT "${Open3D_DIR}/.." ABSOLUTE) else() # Assume standard install: root/lib/cmake/Open3D/Open3DConfig.cmake -> root is up 3 levels get_filename_component(Open3D_ROOT "${Open3D_DIR}/../../.." ABSOLUTE) endif() set(Open3D_BIN_DIR "${Open3D_ROOT}/bin") set(Open3D_RUNTIME_DLLS "") find_file(Open3D_DLL NAMES Open3D.dll PATHS ${Open3D_BIN_DIR} NO_DEFAULT_PATH) if(Open3D_DLL) list(APPEND Open3D_RUNTIME_DLLS ${Open3D_DLL}) message(STATUS "Found Open3D DLL: ${Open3D_DLL}") else() message(WARNING "Open3D DLL not found in ${Open3D_BIN_DIR}. You might need to add it to your PATH manually.") endif() # Find TBB DLLs (tbb.dll or tbb12_debug.dll etc) # We glob for tbb*.dll but filter based on build type to avoid mixing runtimes file(GLOB TBB_ALL_DLLS "${Open3D_BIN_DIR}/tbb*.dll") set(TBB_DLLS ${TBB_ALL_DLLS}) # Filter out debug DLLs (ending in _debug.dll or d.dll) list(FILTER TBB_DLLS EXCLUDE REGEX ".*(_debug|d)\\.dll$") if(NOT TBB_DLLS) # If no release DLLs found, check if we only have debug ones if(TBB_ALL_DLLS) message(WARNING "Only Debug TBB DLLs found in ${Open3D_BIN_DIR}. Release build might crash due to ABI mismatch!") # Fallback: copy everything (dangerous but better than nothing?) set(TBB_DLLS ${TBB_ALL_DLLS}) else() message(WARNING "No TBB DLLs found in ${Open3D_BIN_DIR}.") endif() endif() if(TBB_DLLS) list(APPEND Open3D_RUNTIME_DLLS ${TBB_DLLS}) message(STATUS "Found TBB DLLs: ${TBB_DLLS}") endif() # Halcon # Force usage of the user known path if possible, or fallback to environment set(USER_PROVIDED_HALCON_ROOT "C:/Users/cve/AppData/Local/Programs/MVTec/HALCON-23.11-Progress") if(EXISTS "${USER_PROVIDED_HALCON_ROOT}") set(HALCON_ROOT "${USER_PROVIDED_HALCON_ROOT}") message(STATUS "Using user provided HALCON_ROOT: ${HALCON_ROOT}") elseif(DEFINED ENV{HALCONROOT}) set(HALCON_ROOT $ENV{HALCONROOT}) file(TO_CMAKE_PATH "${HALCON_ROOT}" HALCON_ROOT) message(STATUS "Using HALCON_ROOT from environment: ${HALCON_ROOT}") else() message(WARNING "HALCONROOT not found.") endif() if(HALCON_ROOT) set(HALCON_INCLUDE_DIRS "${HALCON_ROOT}/include" "${HALCON_ROOT}/include/halconcpp" ) if(WIN32) set(HALCON_LIB_DIR "${HALCON_ROOT}/lib/x64-win64") if(NOT EXISTS "${HALCON_LIB_DIR}") set(HALCON_LIB_DIR "${HALCON_ROOT}/lib") endif() set(HALCON_LIBRARIES "${HALCON_LIB_DIR}/halcon.lib" "${HALCON_LIB_DIR}/halconcpp.lib" ) endif() message(STATUS "Halcon include: ${HALCON_INCLUDE_DIRS}") message(STATUS "Halcon libs: ${HALCON_LIBRARIES}") endif()