blob: 91f2630e3355c50505f23e65c1d23c72708f118e [file] [log] [blame]
agsantosd09cc6d2020-11-06 17:34:46 -05001cmake_minimum_required(VERSION 3.10)
2
3# set the project name
4set (ProjectName HelloWorld)
agsantosc9181b42020-11-26 12:03:04 -05005set (Version 1.0.1)
agsantosd09cc6d2020-11-06 17:34:46 -05006
7project(${ProjectName} VERSION ${Version})
8
9set (DAEMON ${PROJECT_SOURCE_DIR}/../../daemon)
10set (JPL_FILE_NAME ${ProjectName}.jpl)
11set (DAEMON_SRC ${DAEMON}/src)
12set (CONTRIB_PATH ${DAEMON}/contrib)
13set (PLUGINS_LIB ${PROJECT_SOURCE_DIR}/../lib)
14set (JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl)
15set (LIBS_DIR ${PROJECT_SOURCE_DIR}/../contrib/Libs)
16
17if(WIN32)
18 message(OS:\ WINDOWS\ ${CMAKE_SYSTEM_PROCESSOR})
19 if (NOT ${CMAKE_CL_64})
20 message( FATAL_ERROR "\nUse CMake only for x64 Windows" )
21 endif()
22 set (CONTRIB_PLATFORM_CURT x64)
23 set (CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-windows)
24 set (LIBRARY_FILE_NAME ${ProjectName}.dll)
25 set (FFMPEG ${CONTRIB_PATH}/build/ffmpeg/Build/win32/x64)
26else()
27 message( FATAL_ERROR "\nUse CMake only for Windows! For linux or Android (linux host), use our bash scripts." )
28endif()
29
30message(Building:\ ${ProjectName}\ ${Version})
31message(Build\ path:\ ${PROJECT_BINARY_DIR})
32message(JPL\ assembling\ path:\ ${JPL_DIRECTORY})
33message(JPL\ path:\ ${JPL_DIRECTORY}/../../../build/${ProjectName}/${JPL_FILE_NAME})
34
35set(CMAKE_CXX_STANDARD 17)
36set(CMAKE_CXX_STANDARD_REQUIRED True)
37set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
38set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
39
40set(plugin_SRC CoinCircleMediaHandler.cpp
41 CenterCircleVideoSubscriber.cpp
42 CenterCircleMediaHandler.cpp
43 CoinCircleVideoSubscriber.cpp
44 main.cpp
agsantosc9181b42020-11-26 12:03:04 -050045 ./../lib/accel.cpp
46 ./../lib/frameUtils.cpp
agsantosd09cc6d2020-11-06 17:34:46 -050047 )
48
49set(plugin_HDR CoinCircleVideoSubscriber.h
50 CenterCircleVideoSubscriber.h
51 CoinCircleMediaHandler.h
52 CenterCircleMediaHandler.h
agsantosc9181b42020-11-26 12:03:04 -050053 ./../lib/accel.h
54 ./../lib/frameScaler.h
55 ./../lib/frameUtils.h
56 ./../lib/pluglog.h
agsantosd09cc6d2020-11-06 17:34:46 -050057 )
58
59add_library(${ProjectName} SHARED ${plugin_SRC}
60 ${plugin_HDR}
61 )
62
63target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR}
64 ${PROJECT_SOURCE_DIR}
65 ${PLUGINS_LIB}
66 ${DAEMON_SRC}
67 ${CONTRIB_PATH}
Aline Gondim Santosba981bb2022-08-02 14:28:04 -030068 ${CONTRIB_PATH}/build/fmt/include
agsantosd09cc6d2020-11-06 17:34:46 -050069 ${FFMPEG}/include
70 ${CONTRIB_PATH}/build/opencv/build/install/include
71 )
72target_link_directories(${ProjectName} PUBLIC ${CONTRIB_PATH}
73 ${FFMPEG}/bin
74 ${CONTRIB_PATH}/build/opencv/build/lib/Release
75 ${CONTRIB_PATH}/build/opencv/build/3rdparty/lib/Release
Aline Gondim Santosba981bb2022-08-02 14:28:04 -030076 ${CONTRIB_PATH}/build/fmt/msvc/Release
agsantosd09cc6d2020-11-06 17:34:46 -050077 )
78
Aline Gondim Santos5d012922022-08-01 11:55:05 -030079target_link_libraries(${ProjectName} PUBLIC swscale avutil opencv_imgproc460 opencv_core460 zlib)
agsantosd09cc6d2020-11-06 17:34:46 -050080
81add_custom_command(
82 TARGET ${ProjectName}
83 PRE_BUILD
agsantos7ad7a3a2021-01-19 12:57:54 -050084 COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName}
agsantosd09cc6d2020-11-06 17:34:46 -050085 COMMENT "Assembling Plugin files"
86)
87
88add_custom_command(
89 TARGET ${ProjectName}
90 POST_BUILD
91 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
92 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
agsantos7ad7a3a2021-01-19 12:57:54 -050093 COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName}
agsantosd09cc6d2020-11-06 17:34:46 -050094 COMMENT "Generating JPL archive"
95)