123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- cmake_minimum_required(VERSION 2.8)
- set(ALL_SAMPLES
- DumpAllFeatures
- ListDevices
- LoopDetect
- ForceDeviceIP
- NetStatistic
- DeviceStorage
- SimpleView_FetchFrame
- SimpleView_Callback
- SimpleView_Registration
- SimpleView_PixelsRegistration
- SimpleView_FetchHisto
- SimpleView_MultiDevice
- SimpleView_TriggerMode0
- SimpleView_TriggerMode1
- SimpleView_TriggerMode18
- SimpleView_TriggerMode19
- SimpleView_TriggerMode20
- SimpleView_TriggerMode21
- SimpleView_TriggerMode30
- SimpleView_TriggerMode31
- SimpleView_TriggerMode_M2S1
- SimpleView_TriggerMode_M3S1
- SimpleView_KeepAlive
- SimpleView_TriggerDelay
- SimpleView_StreamAsync
- SimpleView_StreamAsync1
- SimpleView_ImuData
- SimpleView_DI_DO
- SimpleView_OpenWithIP
- SimpleView_HDR
- SimpleView_SGBM
- )
- set(SAMPLES_USED_GLUT
- SimpleView_Point3D
- SimpleView_Point3D_XYZ48
- )
- if (MSVC)
- option(OpenCV_STATIC "Using static opencv" OFF)
- endif()
- option(OPENGL_VIEW "Enable GLUT OpenGL point cloud view " OFF)
- if (NOT TARGET tycam)
- #only build samples
- option (OpenCV_STATIC OFF)
- set(INCLUDE_PATH ../include)
- include_directories(${INCLUDE_PATH})
- set(ABSOLUTE_TARGET_LIB tycam)
- add_library(${ABSOLUTE_TARGET_LIB} SHARED IMPORTED)
- if (MSVC)#for windows
- set (LIB_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../lib/win/hostapp/)
- if(CMAKE_CL_64) #x64
- set_property(TARGET ${ABSOLUTE_TARGET_LIB} PROPERTY IMPORTED_LOCATION ${LIB_ROOT_PATH}/x64/tycam.dll)
- set_property(TARGET ${ABSOLUTE_TARGET_LIB} PROPERTY IMPORTED_IMPLIB ${LIB_ROOT_PATH}/x64/tycam.lib)
- else()
- set_property(TARGET ${ABSOLUTE_TARGET_LIB} PROPERTY IMPORTED_LOCATION ${LIB_ROOT_PATH}/x86/tycam.dll)
- set_property(TARGET ${ABSOLUTE_TARGET_LIB} PROPERTY IMPORTED_IMPLIB ${LIB_ROOT_PATH}/x86/tycam.lib)
- endif()
- else()
- if(ARCH)
- set_property(TARGET ${ABSOLUTE_TARGET_LIB} PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../lib/linux/lib_${ARCH}/libtycam.so)
- else()
- set(ABSOLUTE_TARGET_LIB -ltycam)
- endif()
- endif()
- endif()
- if (MSVC)
- if (OpenCV_STATIC)
- message("using static opencv")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
- endif()
- add_definitions(-D_CRT_SECURE_NO_WARNINGS)
- endif()
- # ========================================
- # === common, build static lib to speed up
- # ========================================
- set(COMMON_SOURCES common/MatViewer.cpp common/TYThread.cpp common/ImageSpeckleFilter.cpp common/DepthInpainter.cpp)
- add_library(sample_common STATIC ${COMMON_SOURCES})
- if(UNIX)
- target_link_libraries(sample_common pthread)
- endif()
- # ========================================
- # === OpenCV
- # ========================================
- find_package(OpenCV REQUIRED)
- if (NOT OpenCV_FOUND)
- message(FATAL_ERROR "OpenCV library not found")
- else()
- include_directories(${OpenCV_INCLUDE_DIRS})
- include_directories(${OpenCV2_INCLUDE_DIRS})
- # if(CMAKE_BUILD_TYPE STREQUAL Debug)
- # link_directories(${OpenCV_LIB_DIR_DBG})
- # else()
- # link_directories(${OpenCV_LIB_DIR_OPT})
- # endif()
- link_directories(${OpenCV_LIB_DIR})
- endif()
- # ========================================
- # === OpenGL
- # ========================================
- if (OPENGL_VIEW)
- set (CLOUD_VIEW_DIR "${CMAKE_CURRENT_SOURCE_DIR}/common/cloud_viewer/")
- file (GLOB viewer_src ${CLOUD_VIEW_DIR}/*.c ${CLOUD_VIEW_DIR}/*.cpp )
- include_directories(${CLOUD_VIEW_DIR}/freeglut/include)
- add_library(cloud_viewer STATIC ${viewer_src})
- target_compile_definitions(cloud_viewer PUBLIC FREEGLUT_STATIC)
- if (WIN32)
- #build freeglut by ourselves
- include(ExternalProject)
- ExternalProject_Add( glut_proj
- PREFIX "${CMAKE_CURRENT_SOURCE_DIR}"
- SOURCE_DIR "${CLOUD_VIEW_DIR}/freeglut"
- BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/freeglut_build"
- CMAKE_ARGS
- -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/freeglut_install
- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
- -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
- -DCMAKE_STATIC_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}
- -DCMAKE_STATIC_LINKER_FLAGS_DEBUG=${CMAKE_EXE_LINKER_FLAGS_DEBUG}
- -DCMAKE_STATIC_LINKER_FLAGS_RELEASE=${CMAKE_EXE_LINKER_FLAGS_RELEASE}
- -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
- -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
- -DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
- -DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
- )
- add_library(myglut STATIC IMPORTED)
- add_dependencies(myglut glut_proj)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/freeglut_install/include)
- set_target_properties(myglut PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR}/freeglut_install/include)
- set( glut_lib_file ${CMAKE_CURRENT_BINARY_DIR}/freeglut_install/lib/freeglut_staticd.lib)
- set_property(TARGET myglut PROPERTY IMPORTED_LOCATION_DEBUG ${glut_lib_file} )
- set( glut_lib_file ${CMAKE_CURRENT_BINARY_DIR}/freeglut_install/lib/freeglut_static.lib)
- set_property(TARGET myglut PROPERTY IMPORTED_LOCATION ${glut_lib_file} )
- add_dependencies(cloud_viewer glut_proj)
- target_link_libraries(cloud_viewer PUBLIC myglut)
- else()
- find_package(GLUT REQUIRED)
- find_package(OpenGL REQUIRED)
- include_directories(${GLUT_INCLUDE_DIR} ${OPENGL_INCLUDE_DIRS})
- target_link_libraries(cloud_viewer PUBLIC ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES})
- endif()
- include_directories(common/cloud_viewer)
- set(ALL_SAMPLES ${ALL_SAMPLES} ${SAMPLES_USED_GLUT})
- set(CLOUD_VIEWER ${GLUT_LIBRARIES} cloud_viewer)
- endif()
- #install for sample header file
- file(GLOB SAMPLES_INC_SRC ${CMAKE_CURRENT_SOURCE_DIR}/common/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/common/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/common/*.h)
- install(FILES ${SAMPLES_INC_SRC} DESTINATION samples/common/ )
- foreach(sample ${ALL_SAMPLES})
- get_filename_component(spath "${sample}" ABSOLUTE )
- if (EXISTS "${spath}/")
- file(GLOB sources ${sample}/*.cpp)
- add_executable(${sample} ${sources})
- add_dependencies(${sample} sample_common ${TARGET_LIB})
- target_link_libraries(${sample} sample_common ${ABSOLUTE_TARGET_LIB} ${OpenCV_LIBS} ${CLOUD_VIEWER})
- set_target_properties(${sample} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/)
- set_target_properties(${sample} PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON )
- install(TARGETS ${sample} RUNTIME DESTINATION samples/)
- endif()
- endforeach()
|