Service_NSSM/CC_SDK/CMakeLists.txt
2025-09-27 14:24:18 +08:00

256 lines
8.5 KiB
CMake

cmake_minimum_required(VERSION 3.0...3.5)
if(CMAKE_SYSTEM_NAME STREQUAL "OHOS")
message(WARNING "当前构建系统为 OpenHarmony")
set(OS_OHOS TRUE PARENT_SCOPE)
else()
set(OS_OHOS FALSE PARENT_SCOPE)
endif()
if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm|ARM|Armv[0-9]+")
message(STATUS "Target architecture is ARM")
message(STATUS "目标架构是 ARM")
set(ARCH_ARM TRUE)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|x86_64|amd64|AMD64")
message(STATUS "Target architecture is x86/x86_64")
message(STATUS "目标架构是 x86/x86_64")
set(ARCH_X86 TRUE)
else()
message(WARNING "Unknown architecture: ${CMAKE_SYSTEM_PROCESSOR}")
endif()
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(ENABLE_INSTALL_RULES OFF CACHE BOOL "Disable install rules for cppp-reiconv")
add_subdirectory(Environment/cppp-reiconv)
add_subdirectory(Environment/CSerialPort)
add_subdirectory(Environment/mirrors_nlohmann_json)
add_subdirectory(Environment/portaudio)
add_subdirectory(Environment/openssl-cmake)
option(FFMPEG "CC_FFMPEG_OAF" OFF)
if (FFMPEG)
message(STATUS "FFMPEG ON")
add_subdirectory(Environment/FFmpeg)
endif ()
option(SDL2 "CC_SDL2_OAF" OFF)
if (SDL2)
message(STATUS "SDL2 ON")
add_subdirectory(Environment/SDL2)
include_directories(${CMAKE_CURRENT_LIST_DIR}/Environment/SDL2/include)
endif ()
option(OPENCV "CC_OPENCV_OAF" OFF)
if (OPENCV)
message(STATUS "OPENCV ON")
add_subdirectory(Environment/opencv)
endif ()
option(LIBRTC "CC_LIBRTC_OAF" OFF)
if(LIBRTC)
add_subdirectory(Environment/libdatachannel)
endif()
option(GLFW "CC_GLFW_OAF" OFF)
if (GLFW)
add_subdirectory(Environment/glfw)
endif ()
set(INC_DIR ${PROJECT_SOURCE_DIR}/CC_SDK/Include)
set(LINK_DIR ${PROJECT_SOURCE_DIR}/CC_SDK/Lib)
set(LINK_DLL_DIR ${PROJECT_SOURCE_DIR}/CC_SDK/Bin)
set(LIB_WX_D ${PROJECT_SOURCE_DIR}/CC_SDK/Lib/wx/libwxmsw32ud.a)
set(LIB_WX_R ${PROJECT_SOURCE_DIR}/CC_SDK/Lib/wx/libwxmsw32u.a)
set(CC_API_INC
${PROJECT_SOURCE_DIR}/CC_SDK/Include
${PROJECT_SOURCE_DIR}/CC_SDK/Include/basic
${PROJECT_SOURCE_DIR}/CC_SDK/Environment/CSerialPort/include
${PROJECT_SOURCE_DIR}/CC_SDK/Environment/mirrors_nlohmann_json/include
${PROJECT_SOURCE_DIR}/CC_SDK/Environment/mirrors_nlohmann_json/include/nlohmann
${PROJECT_SOURCE_DIR}/CC_SDK/Environment/portaudio/include
${PROJECT_SOURCE_DIR}/CC_SDK/Include/Multimedia
${PROJECT_SOURCE_DIR}/CC_SDK/Include/CCServlet/SQL
${PROJECT_SOURCE_DIR}/CC_SDK/Include/Module
${PROJECT_SOURCE_DIR}/CC_SDK/Include/Module/File
${PROJECT_SOURCE_DIR}/CC_SDK/Include/Module/Comm
${PROJECT_SOURCE_DIR}/CC_SDK/Include/Module/Data
${PROJECT_SOURCE_DIR}/CC_SDK/Include/Module/Multimedia
${PROJECT_SOURCE_DIR}/CC_SDK/Include/Module/IO
${PROJECT_SOURCE_DIR}/CC_SDK/Include/CCServlet/
${PROJECT_SOURCE_DIR}/CC_SDK/Environment/ImGUI/IMUI/Control
${PROJECT_SOURCE_DIR}/CC_SDK/Environment/ImGUI/IMUI/Drive
${PROJECT_SOURCE_DIR}/CC_SDK/Environment/ImGUI/IMUI/ImGui
${PROJECT_SOURCE_DIR}/CC_SDK/Environment/ImGUI/IMUI/WindowOS
${PROJECT_SOURCE_DIR}/CC_SDK/Environment/ImGUI/glfw/include
${PROJECT_SOURCE_DIR}/CC_SDK/Environment/mysql-9.0.1/include
${PROJECT_SOURCE_DIR}/CC_SDK/Include/CCServlet/openssl
${PROJECT_SOURCE_DIR}/CC_SDK/Include/Module/Comm/WebSocket
${PROJECT_SOURCE_DIR}/CC_SDK/Include/Module/Comm/WebRTC
${PROJECT_SOURCE_DIR}/CC_SDK/Include/Module/Window
)
if (FFMPEG)
list(APPEND CC_API_INC ${CC_FFMPEG_INC})
endif ()
if (SDL2)
list(APPEND CC_API_INC ${CMAKE_CURRENT_LIST_DIR}/Environment/SDL2/include)
endif ()
if (OPENCV)
list(APPEND CC_API_INC Environment/opencv/BuildInclude)
endif ()
if (LIBRTC)
list(APPEND CC_API_INC ${CMAKE_CURRENT_LIST_DIR}/Environment/libdatachannel/include)
endif ()
if (GLFW)
list(APPEND CC_API_INC ${CMAKE_CURRENT_LIST_DIR}/Environment/glfw/include)
endif ()
option(APIS "APIS" ON)
if (APIS)
add_library(CC_API
STATIC
Include/basic/CCEncode.h
Include/basic/CCByteArray.h
Include/basic/CCString.h
src/basic/CCObject.cpp
src/basic/CCEncode.cpp
src/basic/CCByteArray.cpp
src/basic/CCString.cpp
src/Module/File/CCFIleInStream.cpp
src/Module/File/CCFileOutStream.cpp
src/Module/Comm/CCSocket.cpp
src/Module/Data/CCJSONObject.cpp
src/Module/IO/CCThread.cpp
src/Module/IO/CCProcess.cpp
src/Module/IO/CCThreadPool.cpp
src/Module/IO/CCTimeData.cpp
src/Module/Multimedia/CCAudio.cpp
src/Module/Comm/CCEpoll.cpp
src/Module/Comm/CCSerialPort.cpp
src/CCServlet/CCRequest.cpp
src/CCServlet/CCResponse.cpp
src/CCServlet/CCSQLite3.cpp
src/CCServlet/CCWebServlet.cpp
src/CCServlet/CCHttpClient.cpp
src/CCServlet/CCHttpResolver.cpp
src/Sys/wepoll.c
src/Sys/sqlite3.c
Include/Sys/sqlite3.h
Include/Sys/sqlite3ext.h
Include/basic/CCObject.h
Include/basic/CC.h
Include/CCAPI.h
Include/basic/CCByte.h
Include/basic/CCVector.h
Include/basic/CCMap.h
Include/basic/CCList.h
Include/basic/CCQueue.h
Include/basic/CCArray.h
Include/Module/Comm/CCNetwork.h
src/Module/Comm/CCNetwork.cpp
Include/Module/File/CCFile.h
src/Module/File/CCFile.cpp
Include/basic/CCFunction.h
Include/basic/CCAutoLock.h
Include/basic/CCArrayList.h
Include/basic/CCLinkedMap.h
Include/basic/CCAllocator.h
src/Module/Comm/WebSocket/base64.cpp
src/Module/Comm/WebSocket/sha1_portable.cpp
src/Module/Comm/WebSocket/string_helper.cpp
src/Module/Comm/WebSocket/ws_endpoint.cpp
src/Module/Comm/WebSocket/ws_packet.cpp
Include/Module/Comm/WebSocket/CCWebSocket.h
src/Module/Comm/WebSocket/CCWebSocket.cpp
Include/CCServlet/openssl/applink.h
src/Module/Window/CCApplication.cpp
Include/basic/ConcurrentQueue.h
Include/basic/ConcurrentMap.h
Include/basic/ConcurrentLinkedList.h
src/basic/CCTimer.cpp
src/Module/File/CCLogger.cpp
Include/Module/Comm/WebRTC/CCWebRTC.cpp
Include/Module/Comm/WebRTC/CCWebRTC.h
Include/Module/Comm/WebRTC/CCWCTool.h
src/DataModule/NetSqlite.cpp
Include/DataModule/NetSqlite.h
Include/Module/Window/CCSystem.h
src/Module/Window/CCSystem.cpp
Include/basic/StreamHandler.h
Include/Multimedia/CCMiniMP3.cpp
Include/Multimedia/CCMiniMP3.h
)
target_include_directories(CC_API PUBLIC
${CC_API_INC}
)
if(${OS_OHOS})
target_link_libraries(CC_API PUBLIC libhilog_ndk.z.so)
endif()
if(CMAKE_HOST_UNIX)
target_link_libraries(CC_API PUBLIC
libcserialport
nlohmann_json
PortAudio
libcppp-reiconv.shared
crypto ssl
)
elseif(CMAKE_HOST_WIN32)
target_link_libraries(CC_API PUBLIC
libcserialport
nlohmann_json
PortAudio
libcppp-reiconv.shared
crypto ssl
shlwapi shell32 Pdh iphlpapi
)
add_compile_definitions(UNICODE _UNICODE) # 强制使用Unicode
else()
endif()
if (FFMPEG)
target_link_libraries(CC_API PUBLIC CC_FFmpeg_API)
endif ()
if (SDL2)
target_link_libraries(CC_API PUBLIC
SDL2::SDL2
SDL2main
)
endif ()
if (OPENCV)
target_link_libraries(CC_API PUBLIC
opencv_calib3d
opencv_core
opencv_dnn
opencv_features2d
opencv_flann
opencv_gapi
opencv_highgui
opencv_imgcodecs
opencv_imgproc
opencv_ml
opencv_objdetect
opencv_photo
opencv_stitching
opencv_video
opencv_videoio
)
endif ()
if (LIBRTC)
target_link_libraries(CC_API PUBLIC datachannel)
endif ()
if (GLFW)
target_link_libraries(CC_API PUBLIC glfw)
endif ()
endif(APIS)