256 lines
8.5 KiB
CMake
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)
|
|
|
|
|