cmake_minimum_required(VERSION 3.9) project(SecMedia VERSION 0.0.1 DESCRIPTION "Security Media Package") set(CMAKE_CXX_STANDARD 11) if(${CMAKE_BUILD_TYPE} MATCHES "Release") message(STATUS "Release版本") set(BuildType "Release") add_definitions(-DNDEBUG) elseif(${CMAKE_BUILD_TYPE} MATCHES "MinSizeRel") message(STATUS "MinSizeRel版本") set(BuildType "MinSizeRel") else() set(BuildType "Debug") message(STATUS "Debug版本") add_definitions(-DDEBUG_LOG) add_definitions(-DNDEBUG) add_definitions(-DDUMP_FILE) endif() #加载自定义模块 add_definitions(-DSIGN_ENABLE) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/release/lib/${BuildType}) SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/release/out) set(CMAKE_C_VISIBILITY_PRESET hidden) set(CMAKE_CXX_VISIBILITY_PRESET hidden) # set(CMAKE_C_FLAGS$ "${CMAKE_C_FLAGS} -fvisibility = hidden") # set(CMAKE_CXX_FLAGS$ "${CMAKE_CXX_FLAGS} -fvisibility = hidden") set(SecMedia_Root ${CMAKE_CURRENT_SOURCE_DIR}/src) add_compile_options(-fPIC) # add_compile_options(-fvisibility=hidden) # add_compile_options(-std=c++11) #add_compile_options(-mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -mno-unaligned-access -fno-aggressive-loop-optimizations -Wcast-align) include(GNUInstallDirs) include(GenerateExportHeader) #media-server ps dec enc set(MediaServer_Root ${SecMedia_Root}/3rdpart/media-server) include_directories(${MediaServer_Root}/librtp/include) include_directories(${MediaServer_Root}/libmpeg/include) include_directories(${MediaServer_Root}/libmpeg/source) aux_source_directory(${MediaServer_Root}/libmpeg/include src_rtp) aux_source_directory(${MediaServer_Root}/libmpeg/source src_rtp) aux_source_directory(${MediaServer_Root}/librtp/include src_rtp) aux_source_directory(${MediaServer_Root}/librtp/source src_rtp) aux_source_directory(${MediaServer_Root}/librtp/payload src_rtp) add_library(rtp STATIC ${src_rtp}) include_directories(${SecMedia_Root}/SVAC/src/svac_src) #添加svac解密 aux_source_directory(${SecMedia_Root}/SVAC/src/sm2sm3 src_DEC) aux_source_directory(${SecMedia_Root}/SVAC/src/svac_src src_DEC) add_library(SVAC_DEC STATIC ${src_DEC}) #添加svac加密 #include_directories(${DEC_ENC_Algorithm}/SVAC/svac_enc) #file(GLOB src_DEC_ENC ${DEC_ENC_Algorithm}/SVAC/svac_enc/*/*.c ${DEC_ENC_Algorithm}/SVAC/svac_enc/*/*.h) aux_source_directory(${SecMedia_Root}/SVAC/src/sm2sm3_enc src_ENC) aux_source_directory(${SecMedia_Root}/SVAC/src/svac_src src_ENC) add_library(SVAC_ENC STATIC ${src_ENC}) list(APPEND LINK_LIB_SVAC_LIST SVAC_DEC) list(APPEND LINK_LIB_SVAC_LIST SVAC_ENC) #添加密码卡库 # add_definitions(-DENABLE_HARDWARE_SIGN) # list(APPEND LINK_LIB_SVAC_LIST sm.so) include_directories(include src) # add_definitions(-DGENERATE_EXPORT) #file(GLOB SecMedia_src_list ${SecMedia_Root}/SVAC/./*.c ${SecMedia_Root}/SVAC/./*.h) file(GLOB SecMedia_src_list ${SecMedia_Root}/*/*.cpp ${SecMedia_Root}/*/*.h ${SecMedia_Root}/*/*.c ${SecMedia_Root}/*/*/*.cpp ${SecMedia_Root}/*/*/*.h ${SecMedia_Root}/*/*/*.c) file(GLOB SecMedia_api_list ${CMAKE_CURRENT_SOURCE_DIR}/include/common.h ) # # target_compile_options(${PROJECT_NAME} PRIVATE -fvisibility=hidden) # list(APPEND LINK_LIB_LIST ${LINK_LIB_SVAC_LIST}) add_library(${PROJECT_NAME} SHARED ${SecMedia_src_list}) # add_library(${PROJECT_NAME} STATIC ${SecMedia_src_list}) target_link_libraries(${PROJECT_NAME} ${LINK_LIB_SVAC_LIST} rtp) target_include_directories(${PROJECT_NAME} PRIVATE ${SecMedia_Root}/.) # set_target_properties(${PROJECT_NAME} PROPERTIES # VERSION ${PROJECT_VERSION} # SOVERSION 1 # PUBLIC_HEADER ${SecMedia_api_list} # ) # CXX_VISIBILITY_PRESET hidden # CMAKE_C_FLAGS hidden) list(APPEND LINK_LIB_LIST ${PROJECT_NAME}) list(APPEND LINK_LIB_LIST pthread) #查找jemalloc是否安装 find_package(JEMALLOC QUIET) if(JEMALLOC_FOUND) message(STATUS "found library:\"${JEMALLOC_LIBRARIES}\"") include_directories(${JEMALLOC_INCLUDE_DIR}) list(APPEND LINK_LIB_LIST ${JEMALLOC_LIBRARIES}) else() message(WARNING "JEMALLOC not found") endif() #set(LINK_LIB_LIST ) #MESSAGE(STATUS ${SecMedia_api_list}) #configure_file(SecMedia.pc.in SecMedia.pc @ONLY) # install(TARGETS ${PROJECT_NAME} # LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} # PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) # install(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pc # DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig) add_subdirectory(test) add_subdirectory(PcapSender) add_subdirectory(PcapRawSender) add_subdirectory(SecSetGen)