| cmake_minimum_required(VERSION 3.10) |
| |
| # set the project name |
| set (ProjectName TensorflowSegmentation) |
| set (Version 1.0.2) |
| |
| project(${ProjectName} VERSION ${Version}) |
| |
| set (DAEMON ${PROJECT_SOURCE_DIR}/../../daemon) |
| set (PLUGIN_NAME TensorflowSegmentation) |
| set (JPL_FILE_NAME ${PLUGIN_NAME}.jpl) |
| set (DAEMON_SRC ${DAEMON}/src) |
| set (CONTRIB_PATH ${DAEMON}/contrib) |
| set (PLUGINS_LIB ${PROJECT_SOURCE_DIR}/../lib) |
| set (JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl) |
| set (LIBS_DIR ${PROJECT_SOURCE_DIR}/../contrib/Libs) |
| |
| if(WIN32) |
| message(OS:\ WINDOWS\ ${CMAKE_SYSTEM_PROCESSOR}) |
| if (NOT ${CMAKE_CL_64}) |
| message( FATAL_ERROR "\nUse CMake only for x64 Windows" ) |
| endif() |
| set (CONTRIB_PLATFORM_CURT x64) |
| set (CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-windows) |
| set (LIBRARY_FILE_NAME ${PLUGIN_NAME}.dll) |
| set (LIBS_BIN_DIR $ENV{PLUGIN_ENV}) |
| set (FFMPEG ${CONTRIB_PATH}/build/ffmpeg/Build/win32/x64) |
| endif() |
| |
| if(UNIX) |
| message( FATAL_ERROR "\nUse CMake only for Windows! For linux or Android (linux host), use our bash scripts.\nPlese refer to documentation for more infos." ) |
| message(OS:\ LINUX\ ${CMAKE_SYSTEM_PROCESSOR}) |
| set (CONTRIB_PLATFORM_CURT ${CMAKE_SYSTEM_PROCESSOR}) |
| set (CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-linux-gnu) |
| set (LIBRARY_FILE_NAME lib${PLUGIN_NAME}.so) |
| set (LIBS_BIN_DIR /home/${USER}/Libs) |
| endif() |
| |
| |
| message(Building:\ ${ProjectName}\ ${Version}) |
| message(Build\ path:\ ${PROJECT_BINARY_DIR}) |
| message(JPL\ assembling\ path:\ ${JPL_DIRECTORY}) |
| message(JPL\ path:\ ${JPL_DIRECTORY}/../../../build/${ProjectName}/${JPL_FILE_NAME}) |
| |
| set(TENSORFLOW _tensorflow_cc) |
| set(model mModel-resnet50float.pb) |
| set(modelType .pb) |
| set(preferencesFile preferences-tfcc.json) |
| set(TFLIB libtensorflow_cc) |
| set(GPU -gpu61) |
| |
| if (CPU) |
| set(GPU ) |
| add_definitions(-DCPU) |
| message(CPU\ BUILDING!) |
| endif() |
| |
| if (TFLITE) |
| add_definitions(-DTFLITE) |
| set(TENSORFLOW _tensorflowLite) |
| set(model mobilenet_v2_deeplab_v3_256_myquant.tflite) |
| set(modelType .tflite) |
| set(preferencesFile preferences-tflite.json) |
| set(TFLIB libtensorflowlite) |
| message(TFLITE\ BUILDING!) |
| endif() |
| |
| set(CMAKE_CXX_STANDARD 17) |
| set(CMAKE_CXX_STANDARD_REQUIRED True) |
| set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") |
| set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") |
| |
| set(plugin_SRC main.cpp |
| pluginInference.cpp |
| pluginMediaHandler.cpp |
| pluginParameters.cpp |
| pluginProcessor.cpp |
| TFInference.cpp |
| videoSubscriber.cpp |
| ./../lib/accel.cpp |
| ./../lib/frameUtils.cpp |
| ) |
| |
| set(plugin_HDR pluginInference.h |
| pluginMediaHandler.h |
| pluginParameters.h |
| pluginProcessor.h |
| TFInference.h |
| TFModels.h |
| videoSubscriber.h |
| ./../lib/accel.h |
| ./../lib/frameScaler.h |
| ./../lib/frameUtils.h |
| ./../lib/pluglog.h |
| ) |
| |
| |
| |
| # add the library |
| add_library(${ProjectName} SHARED ${plugin_SRC} |
| ${plugin_HDR} |
| ) |
| |
| if (WIN32) |
| target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR} |
| ${PROJECT_SOURCE_DIR} |
| ${PLUGINS_LIB} |
| ${DAEMON_SRC} |
| ${CONTRIB_PATH} |
| ${FFMPEG}/include |
| ${CONTRIB_PATH}/build/opencv/build/install/include |
| ${LIBS_DIR}/${TENSORFLOW}/include |
| ${LIBS_DIR}/${TENSORFLOW}/include/third_party/eigen3 |
| ${LIBS_DIR}/${TENSORFLOW}/include/flatbuffers |
| ) |
| target_link_directories(${ProjectName} PUBLIC ${CONTRIB_PATH} |
| ${LIBS_BIN_DIR}/${TENSORFLOW}/lib/${CONTRIB_PLATFORM} |
| ${CONTRIB_PATH}/build/opencv/build/lib/Release |
| ${CONTRIB_PATH}/build/opencv/build/3rdparty/lib/Release |
| ${FFMPEG}/bin |
| ) |
| |
| target_link_libraries(${ProjectName} PUBLIC swscale avutil libpng opencv_imgcodecs411 opencv_imgproc411 opencv_core411 ${TFLIB} zlib) |
| endif() |
| |
| if (UNIX) |
| target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR} |
| ${PROJECT_SOURCE_DIR} |
| ${PLUGINS_LIB} |
| ${DAEMON_SRC} |
| ${CONTRIB_PATH}/${CONTRIB_PLATFORM}/include |
| ${CONTRIB_PATH}/${CONTRIB_PLATFORM}/include/opencv4 |
| ${LIBS_DIR}/${TENSORFLOW}/include |
| ${LIBS_DIR}/${TENSORFLOW}/include/third_party/eigen3 |
| ${LIBS_DIR}/${TENSORFLOW}/include/flatbuffers |
| ) |
| link_directories(${ProjectName} PUBLIC ${CONTRIB_PATH} |
| ${LIBS_BIN_DIR}/${TENSORFLOW}/lib/${CONTRIB_PLATFORM} |
| ${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib |
| ${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib/opencv4/3rdparty |
| ) |
| target_link_libraries(${ProjectName} PUBLIC swscale avutil libpng opencv_imgcodecs opencv_imgproc opencv_core ${TFLIB}) |
| endif() |
| |
| add_custom_command( |
| TARGET ${ProjectName} |
| PRE_BUILD |
| COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=TensorflowSegmentation |
| COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBS_BIN_DIR}/${TENSORFLOW}/lib/ ${JPL_DIRECTORY}/lib |
| COMMAND ${CMAKE_COMMAND} -E make_directory ${JPL_DIRECTORY}/data/models |
| COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/modelsSRC/${model} ${JPL_DIRECTORY}/data/models |
| COMMAND ${CMAKE_COMMAND} -E rename ${JPL_DIRECTORY}/data/models/${model} ${JPL_DIRECTORY}/data/models/mModel${modelType} |
| COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${preferencesFile} ${JPL_DIRECTORY}/data |
| COMMAND ${CMAKE_COMMAND} -E rename ${JPL_DIRECTORY}/data/${preferencesFile} ${JPL_DIRECTORY}/data/preferences.json |
| COMMENT "Assembling Plugin files" |
| ) |
| |
| if (WIN32) |
| add_custom_command( |
| TARGET ${ProjectName} |
| POST_BUILD |
| COMMAND ${CMAKE_COMMAND} -E make_directory ${JPL_DIRECTORY}/../../../build/x64-windows/${TENSORFLOW} |
| COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} |
| COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} |
| COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=TensorflowSegmentation --extraPath=${TENSORFLOW} |
| COMMENT "Generating JPL archive" |
| ) |
| else() |
| add_custom_command( |
| TARGET ${ProjectName} |
| POST_BUILD |
| COMMAND ${CMAKE_COMMAND} -E make_directory ${JPL_DIRECTORY}/../../../build/x86_64-linux-gnu/${TENSORFLOW} |
| COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} |
| COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=TensorflowSegmentation --extraPath=${TENSORFLOW} |
| COMMENT "Generating JPL archive" |
| ) |
| |
| endif() |