USB_Config_Vendor/CC_SDK/CMakeLists.txt
2026-02-03 14:36:30 +08:00

434 lines
14 KiB
CMake

cmake_minimum_required(VERSION 3.0...3.5)
if(MSVC OR CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")
add_compile_options(/utf-8)
endif()
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 "目标架构是 ${CMAKE_SYSTEM_PROCESSOR}")
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)
add_subdirectory(Environment/openssl-cmake)
option(W_T_L_Arm "Window_To_Linux_Arm" OFF)
if (W_T_L_Arm)
message(WARNING "Currently, it is cross-compiled for the Windows platform and the Linux platform for the Arm architecture")
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(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(MYSQL "CC_MYSQL" OFF)
if (MYSQL)
message(STATUS "CC_MYSQL ON")
add_subdirectory(Environment/MySql)
endif ()
option(RTSP "CC_RTSP" OFF)
if (RTSP)
message(STATUS "CC_RTSP ON")
set(CC_RTSP_Module
src/Module/Comm/RTSP/CCRTSPServer.cpp
)
endif ()
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)
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}/Environment/openssl-cmake/env
${CMAKE_CURRENT_LIST_DIR}/Environment/openssl-cmake/env/openssl
${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 (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 (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 (MYSQL)
list(APPEND CC_API_INC ${CC_MySql_INC})
list(APPEND CC_API_INC Include/Environment/mysql)
set(MYSQL_Module
Include/Environment/mysql/CCMySql.cpp
)
endif ()
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
Include/Environment/zlib/CCGZip.cpp
Include/Environment/zlib/CCGZip.h
)
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
Environment/openssl-cmake/env/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
${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}
src/Module/Comm/OpenSSL/CCSSL.cpp
src/CCServlet/HttpSocketChannel.cpp
src/Module/IO/EventLoop.cpp
Include/Module/IO/EventLoop.h
src/basic/CCMemoryPool.cpp
Include/basic/CCMemoryPool.h
src/Module/Data/Persistent.cpp
Include/Module/Data/Persistent.h
src/basic/CCClassFactory.cpp
Include/basic/CCClassFactory.h
src/basic/CCClassRegister.cpp
${MYSQL_Module}
${CC_RTSP_Module}
)
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" AND NOT W_T_L_Arm)
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 (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 (MYSQL)
target_link_libraries(CC_API PUBLIC CC_MySql_API)
# if (CMAKE_HOST_WIN32)
# target_compile_definitions(CC_API PRIVATE _WINSOCKAPI_)
# endif ()
target_compile_definitions(CC_API PRIVATE MY_SQL_BOOL)
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 ()
target_link_libraries(CC_API PUBLIC zlib minizip)