1if(NOT CMAKE_BUILD_TYPE) 2 set(CMAKE_BUILD_TYPE Release CACHE STRING 3 "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." 4 FORCE) 5endif() 6 7cmake_minimum_required(VERSION 2.8...3.22) 8 9PROJECT(smart_ir) 10 11if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/rk_smart_ir.cpp") 12 message("${CMAKE_CURRENT_SOURCE_DIR}/src/rk_smart_ir.cpp not exist, install the libs directly") 13 set(C_LIBRARY_NAME "glibc" CACHE INTERNAL "") 14 if (EXISTS ${CMAKE_CURRENT_LIST_DIR}/../rkaiq/) 15 include(${CMAKE_CURRENT_LIST_DIR}/../rkaiq/cmake/CheckGlibc.cmake) 16 CHECK_GLIBC_VERSION() 17 endif() 18 string(TOLOWER ${RKAIQ_TARGET_SOC} SOC) 19 set(CMAKE_LIBRARY_PATH 20 "${CMAKE_CURRENT_LIST_DIR}/lib/${SOC}/${ARCH}/${C_LIBRARY_NAME}") 21 install(DIRECTORY include/ DESTINATION include/rkaiq/smartIr FILES_MATCHING PATTERN "*.h") 22 install(FILES ${CMAKE_LIBRARY_PATH}/libsmartIr.so DESTINATION lib) 23 install(FILES ${CMAKE_LIBRARY_PATH}/libsmartIr.a DESTINATION lib RENAME libsmartIr.a) 24 return() 25endif() 26 27list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") 28 29# include(BuildOptions) 30# include(CompileOptions) 31# include(GNUInstallDirs) 32 33set_property(GLOBAL PROPERTY USE_FOLDERS ON) 34set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets") 35 36set(RK_AIQ_SOURCE_DIR ${PROJECT_SOURCE_DIR}/../rk_aiq) 37message("rkaiq src path" ${RK_AIQ_SOURCE_DIR}) 38 39add_compile_options(-Os) 40add_compile_options(-fstack-protector-strong -D_FORTIFY_SOURCE=2) 41 42find_path(RKAIQ_INCLUDE_DIR 43 NAMES 44 rk_aiq.h 45 PATH 46 common 47 rkaiq/common 48) 49find_library(RKAIQ_LIBRARY_DIR 50 rkaiq 51) 52if(RKAIQ_INCLUDE_DIR AND RKAIQ_LIBRARY_DIR) 53set(RK_AIQ_INSTALLED_DIR ${RKAIQ_INCLUDE_DIR}) 54set(RK_AIQ_LIB_DIR ${RKAIQ_LIBRARY_DIR}) 55else() 56set(RK_AIQ_INSTALLED_DIR "${RK_AIQ_SOURCE_DIR}/build/linux/output/${ARCH}/installed" CACHE STRING "AIQ library installed dir") 57set(RK_AIQ_LIB_DIR ${RK_AIQ_INSTALLED_DIR}/lib) 58endif() 59message("rkaiq lib path" ${RK_AIQ_LIB_DIR}) 60set(RK_AIQ_INCLUDE_DIR 61 ${RK_AIQ_INSTALLED_DIR}/ 62 ${RK_AIQ_INSTALLED_DIR}/rkaiq/ 63 ${RK_AIQ_INSTALLED_DIR}/rkaiq/uAPI2 64 ${RK_AIQ_INSTALLED_DIR}/rkaiq/xcore/ 65 ${RK_AIQ_INSTALLED_DIR}/rkaiq/algos/ 66 ${RK_AIQ_INSTALLED_DIR}/rkaiq/common/ 67 ${RK_AIQ_INSTALLED_DIR}/rkaiq/iq_parser/ 68 ${RK_AIQ_INSTALLED_DIR}/rkaiq/iq_parser_v2/ 69 ${RK_AIQ_INSTALLED_DIR}/include/ 70 ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/ 71 ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/uAPI2 72 ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/xcore/ 73 ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/algos/ 74 ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/common/ 75 ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/iq_parser/ 76 ${RK_AIQ_INSTALLED_DIR}/include/rkaiq/iq_parser_v2/ 77 ) 78set(RK_AIQ_LIB rkaiq) 79 80if(RK_AIQ_IS_SUBDIR) 81get_target_property(RK_AIQ_HEADER_DIR rkaiq INTERFACE_INCLUDE_DIRECTORIES) 82message("RK_AIQ_HEADER_DIR ${RK_AIQ_HEADER_DIR}") 83endif() 84 85include_directories( 86 include 87 ${RK_AIQ_INCLUDE_DIR} 88 ${RK_AIQ_HEADER_DIR} 89 ) 90 91set (SMARTIR_SRC 92 src/rk_smart_ir.cpp 93 ) 94list(APPEND DIR_SRCS ${AFDEMO_DIR_SRCS}) 95 96SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/all_lib/${CMAKE_BUILD_TYPE}) 97SET(CMAKE_LIBRARY_PATH ${LIBRARY_OUTPUT_PATH}) 98 99#set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") 100#set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") 101message(${CMAKE_LIBRARY_PATH}) 102message(${LIBRARY_OUTPUT_PATH}) 103 104add_definitions(-D_CRT_SECURE_NO_WARNINGS) 105 106link_directories("${RK_AIQ_LIB_DIR}") 107add_library(smartIr SHARED ${SMARTIR_SRC}) 108target_link_libraries(smartIr PUBLIC ${RK_AIQ_LIB}) 109 110add_library(smartIr_static STATIC ${SMARTIR_SRC}) 111 112install(DIRECTORY include/ DESTINATION include/rkaiq/smartIr FILES_MATCHING PATTERN "*.h") 113install(FILES ${CMAKE_LIBRARY_PATH}/libsmartIr.so DESTINATION lib) 114install(FILES ${CMAKE_LIBRARY_PATH}/libsmartIr_static.a DESTINATION lib RENAME libsmartIr.a) 115