Distribution_Service/CC_SDK/CMakeLists.txt
2025-11-11 17:46:19 +08:00

434 lines
14 KiB
CMake

cmake_minimum_required(VERSION 3.0...3.5)
if(CMAKE_SYSTEM_NAME STREQUAL "OHOS")
message(WARNING "当前构建系统为 OpenHarmony")
set(OS_OHOS ON PARENT_SCOPE)
else()
set(OS_OHOS OFF 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 ON)
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64|ARM64")
set(ARM64 ON PARENT_SCOPE)
elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm|ARM")
set(ARM32 ON PARENT_SCOPE)
endif ()
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 ON PARENT_SCOPE)
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/mirrors_nlohmann_json)
if (CMAKE_SYSTEM_NAME STREQUAL "OHOS")
add_subdirectory(Environment/openssl)
else ()
add_subdirectory(Environment/openssl-cmake)
endif ()
option(SerialPort "CC_SerialPort_OAF" OFF)
if (SerialPort)
message(STATUS "CSerialPort ON")
add_subdirectory(Environment/CSerialPort)
set(SerialPort_STATIC
src/Module/Comm/CCSerialPort.cpp
)
endif ()
option(AUDIO_IO "CC_Audio_IO_OAF" OFF)
if (AUDIO_IO)
message(STATUS "AUDIO_IO ON")
set(AUDIO_IO_STATIC
src/Module/Multimedia/CCAudioIO.cpp
)
endif ()
option(PORTAUDIO "CC_PORTAUDIO_OAF" OFF)
if (PORTAUDIO)
message(STATUS "PORTAUDIO ON")
add_subdirectory(Environment/portaudio)
set(portaudio_STATIC
src/Module/Multimedia/CCAudio.cpp
)
endif ()
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(LIBJUICE "CC_LIBJUICE_OAF" OFF)
if(LIBJUICE)
if (NOT LIBRTC)
add_subdirectory(Environment/libjuice)
endif ()
endif()
option(IMGUI "CC_ImGui_OAF" OFF)
if (IMGUI)
message(STATUS "IMGUI ON")
set(IMGUI_SOURCES
src/Module/Window/ImGui/imgui.cpp
src/Module/Window/ImGui/imgui_draw.cpp
src/Module/Window/ImGui/imgui_impl_glfw.cpp
src/Module/Window/ImGui/imgui_impl_opengl3.cpp
src/Module/Window/ImGui/imgui_impl_win32.cpp
src/Module/Window/ImGui/imgui_tables.cpp
src/Module/Window/ImGui/imgui_widgets.cpp
src/Module/Window/CWidget.cpp
src/Module/Window/CApplication.cpp
src/Module/Window/Control/Button.cpp
src/Module/Window/Control/Combox.cpp
src/Module/Window/Control/Comboxs.cpp
src/Module/Window/Control/Image.cpp
src/Module/Window/Control/ImageButton.cpp
src/Module/Window/Control/Label.cpp
src/Module/Window/Control/Panel.cpp
src/Module/Window/Control/SliderBar.cpp
src/Module/Window/Control/SwitchBool.cpp
src/Module/Window/Control/TextBox.cpp
src/Module/Window/Drive/Drive.cpp
)
endif ()
option(GLFW "CC_GLFW_OAF" OFF)
if (GLFW)
message(STATUS "GLFW ON")
add_subdirectory(Environment/glfw)
endif ()
option(ZLIB "CC_ZLIB_OAF" OFF)
if (ZLIB)
add_subdirectory(Environment/zlib)
set(MINIZIP_SOURCES
Environment/zlib/contrib/minizip/ioapi.c
Environment/zlib/contrib/minizip/iowin32.c
Environment/zlib/contrib/minizip/unzip.c
Environment/zlib/contrib/minizip/zip.c
)
add_library(minizip STATIC ${MINIZIP_SOURCES})
target_include_directories(minizip PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/Environment/zlib
${CMAKE_CURRENT_SOURCE_DIR}/Environment/zlib/contrib/minizip
)
target_link_libraries(minizip zlib)
endif ()
set(INC_DIR ${CMAKE_CURRENT_LIST_DIR}/Include)
set(LINK_DIR ${CMAKE_CURRENT_LIST_DIR}/Lib)
set(LINK_DLL_DIR ${CMAKE_CURRENT_LIST_DIR}/Bin)
set(LIB_WX_D ${CMAKE_CURRENT_LIST_DIR}/Lib/wx/libwxmsw32ud.a)
set(LIB_WX_R ${CMAKE_CURRENT_LIST_DIR}/Lib/wx/libwxmsw32u.a)
set(CC_API_INC
${CMAKE_CURRENT_LIST_DIR}/Include
${CMAKE_CURRENT_LIST_DIR}/Include/basic
${CMAKE_CURRENT_LIST_DIR}/Environment/mirrors_nlohmann_json/include
${CMAKE_CURRENT_LIST_DIR}/Environment/mirrors_nlohmann_json/include/nlohmann
${CMAKE_CURRENT_LIST_DIR}/Include/CCServlet/SQL
${CMAKE_CURRENT_LIST_DIR}/Include/Module
${CMAKE_CURRENT_LIST_DIR}/Include/Module/File
${CMAKE_CURRENT_LIST_DIR}/Include/Module/Comm
${CMAKE_CURRENT_LIST_DIR}/Include/Module/Data
${CMAKE_CURRENT_LIST_DIR}/Include/Module/IO
${CMAKE_CURRENT_LIST_DIR}/Include/CCServlet
${CMAKE_CURRENT_LIST_DIR}/Environment/ImGUI/IMUI/WindowOS
${CMAKE_CURRENT_LIST_DIR}/Environment/ImGUI/glfw/include
${CMAKE_CURRENT_LIST_DIR}/Environment/mysql-9.0.1/include
${CMAKE_CURRENT_LIST_DIR}/Include/Module/Comm/WebSocket
${CMAKE_CURRENT_LIST_DIR}/Include/Module/Window
${CMAKE_CURRENT_LIST_DIR}/Include/Module/Window/Control
${CMAKE_CURRENT_LIST_DIR}/Include/Module/Window/Drive
${CMAKE_CURRENT_LIST_DIR}/Include/Module/Window/ImGui
${CMAKE_CURRENT_LIST_DIR}/Include/Module/Comm/Socket
)
if (CMAKE_SYSTEM_NAME STREQUAL "OHOS")
list(APPEND CC_API_INC
${CC_OPENSSL_INC}
)
else ()
list(APPEND CC_API_INC
# ${CMAKE_CURRENT_LIST_DIR}/Environment/openssl-cmake/include/openssl
# ${CMAKE_CURRENT_LIST_DIR}/Environment/openssl-cmake/include
${CMAKE_CURRENT_LIST_DIR}/Include/CCServlet/Env/openssl
${CMAKE_CURRENT_LIST_DIR}/Include/CCServlet/Env
)
endif ()
if (AUDIO_IO)
list(APPEND CC_API_INC
${CMAKE_CURRENT_LIST_DIR}/Include/Module/Multimedia
)
endif ()
if (PORTAUDIO)
list(APPEND CC_API_INC
${CMAKE_CURRENT_LIST_DIR}/Include/Module/Multimedia
${CMAKE_CURRENT_LIST_DIR}/Include/Multimedia
${CMAKE_CURRENT_LIST_DIR}/Environment/portaudio/include
)
endif ()
if (SerialPort)
list(APPEND CC_API_INC ${CMAKE_CURRENT_LIST_DIR}/Environment/CSerialPort/include)
endif ()
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)
list(APPEND CC_API_INC ${CMAKE_CURRENT_LIST_DIR}/Include/Module/Comm/WebRTC)
set(LIBRTC_STATIC src/Module/Comm/WebRTC/CCWebRTC.cpp)
endif ()
if (LIBJUICE)
if (NOT LIBRTC)
list(APPEND CC_API_INC ${CMAKE_CURRENT_LIST_DIR}/Environment/libjuice/include)
endif ()
set(CC_DataChannel
src/Module/Comm/DataChannel/RTCPeerConnection.cpp
)
endif ()
if (GLFW)
list(APPEND CC_API_INC ${CMAKE_CURRENT_LIST_DIR}/Environment/glfw/include)
endif ()
if (IMGUI)
endif ()
if (ZLIB)
list(APPEND CC_API_INC ${CMAKE_CURRENT_LIST_DIR}/Environment/zlib/contrib/minizip)
list(APPEND CC_API_INC ${CMAKE_CURRENT_LIST_DIR}/Environment/zlib/contrib)
list(APPEND CC_API_INC ${CMAKE_CURRENT_LIST_DIR}/Environment/zlib)
list(APPEND CC_API_INC ${CMAKE_BINARY_DIR}/CC_SDK/Environment/zlib)
#list(APPEND CC_API_INC ${CMAKE_CURRENT_LIST_DIR}/Environment/zlib/include)
list(APPEND CC_API_INC ${CMAKE_CURRENT_LIST_DIR}/Include/Environment/zlib)
set(ZLIB_Module
Include/Environment/zlib/CCZip.cpp
Include/Environment/zlib/CCDataFormat.cpp
Include/Module/Window/Control/Icon.h
)
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/Socket/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/Comm/CCEpoll.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/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
${LIBRTC_STATIC}
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
${ZLIB_Module}
${SerialPort_STATIC}
${portaudio_STATIC}
${IMGUI_SOURCES}
Include/TL/Array_CTL.h
Include/TL/Map_CTL.h
${AUDIO_IO_STATIC}
src/Module/Comm/Socket/CCDatagramSocket.cpp
src/Module/Comm/Socket/CCServerSocket.cpp
src/Module/Comm/Socket/CCClientSocket.cpp
${CC_DataChannel}
)
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
nlohmann_json
libcppp-reiconv.shared
crypto ssl
)
if (AUDIO_IO)
target_link_libraries(CC_API PUBLIC asound)
endif ()
elseif(CMAKE_HOST_WIN32)
target_link_libraries(CC_API PUBLIC
nlohmann_json
libcppp-reiconv.shared
crypto ssl
)
if (NOT CMAKE_SYSTEM_NAME STREQUAL "OHOS")
target_link_libraries(CC_API PUBLIC shlwapi shell32 Pdh iphlpapi winmm)
endif ()
add_compile_definitions(UNICODE _UNICODE) # 强制使用Unicode
else()
endif()
if (PORTAUDIO)
target_link_libraries(CC_API PUBLIC PortAudio)
endif ()
if (SerialPort)
target_link_libraries(CC_API PUBLIC libcserialport)
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 (LIBJUICE)
if (NOT LIBRTC)
target_link_libraries(CC_API PUBLIC LibJuice::LibJuiceStatic)
endif ()
add_definitions(-DLIBJUICE_INC)
target_compile_definitions(CC_API PUBLIC LIBJUICE_INC)
endif ()
if (GLFW)
target_link_libraries(CC_API PUBLIC glfw)
endif ()
if (IMGUI)
if(CMAKE_HOST_UNIX)
target_link_libraries(CC_API PUBLIC GL glfw X11)
elseif(CMAKE_HOST_WIN32)
target_link_libraries(CC_API PUBLIC opengl32 dwmapi glfw)
else()
endif ()
endif ()
if (ZLIB)
target_link_libraries(CC_API PUBLIC zlib minizip)
endif ()
endif(APIS)