130 lines
4.5 KiB
CMake
130 lines
4.5 KiB
CMake
# 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()
|