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)