434 lines
14 KiB
CMake
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)
|
|
|
|
|
|
|
|
|