|
| 1 | +# 设置 C++ 标准为 C++17 |
| 2 | +#cmake_minimum_required(VERSION 3.10) |
| 3 | +#project(HMedia LANGUAGES CXX) # 明确指定为C++项目 |
| 4 | + |
| 5 | +set(CMAKE_CXX_STANDARD 17) |
| 6 | +set(CMAKE_CXX_STANDARD_REQUIRED ON) |
| 7 | + |
| 8 | +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") |
| 9 | +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") |
| 10 | + |
| 11 | +# 开启utf-8编码支持 |
| 12 | +if (MSVC) |
| 13 | + add_compile_options(/utf-8) |
| 14 | +endif() |
| 15 | + |
| 16 | +if (CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU") |
| 17 | + add_compile_options(-finput-charset=UTF-8 -fexec-charset=UTF-8) |
| 18 | +endif() |
| 19 | + |
| 20 | +#开启MSVC多线程编译 # windows 并行编译选项 |
| 21 | +add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/Gm->) #高版本已被废弃,但是低版本的Gm会影响并行 |
| 22 | +cmake_host_system_information(RESULT CPU_NUMBER_OF_LOGICAL_CORES QUERY NUMBER_OF_LOGICAL_CORES) |
| 23 | +add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP${CPU_NUMBER_OF_LOGICAL_CORES}>) |
| 24 | + |
| 25 | +# 添加宏 |
| 26 | +add_definitions(-DH_MEDIA_API_EXPORT) |
| 27 | + |
| 28 | +# 将源代码添加到此项目的可执行文件。 |
| 29 | +file(GLOB H_MEDIA_SRC_FILES |
| 30 | + "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" |
| 31 | + "${CMAKE_CURRENT_SOURCE_DIR}/Source/*.cpp" |
| 32 | + "${CMAKE_CURRENT_SOURCE_DIR}/Source/Audio/*.cpp" |
| 33 | + "${CMAKE_CURRENT_SOURCE_DIR}/Source/Common/*.cpp" |
| 34 | + "${CMAKE_CURRENT_SOURCE_DIR}/Source/SDL/*.cpp" |
| 35 | + "${CMAKE_CURRENT_SOURCE_DIR}/Source/FFmpeg/*.cpp" |
| 36 | +) |
| 37 | + |
| 38 | +file(GLOB H_MEDIA_HEADER_FILES |
| 39 | + "${CMAKE_CURRENT_SOURCE_DIR}/Include/*.h" |
| 40 | + "${CMAKE_CURRENT_SOURCE_DIR}/Include/Audio/*.h" |
| 41 | + "${CMAKE_CURRENT_SOURCE_DIR}/Include/Common/*.h" |
| 42 | + "${CMAKE_CURRENT_SOURCE_DIR}/Include/SDL/*.h" |
| 43 | + "${CMAKE_CURRENT_SOURCE_DIR}/Include/FFmpeg/*.h" |
| 44 | + |
| 45 | + "${CMAKE_CURRENT_SOURCE_DIR}/Interface/*.h" |
| 46 | +) |
| 47 | + |
| 48 | +# 启用预编译头支持 |
| 49 | +#set(CMAKE_PCH_ENABLED ON) |
| 50 | + |
| 51 | +# 当前cmake C++项目为动态库 |
| 52 | +add_library (HMedia SHARED ${H_MEDIA_SRC_FILES} ${H_MEDIA_HEADER_FILES}) |
| 53 | + |
| 54 | +# 添加头文件搜索路径 |
| 55 | +target_include_directories(HMedia PRIVATE ${PROJECT_SOURCE_DIR}/Runtime) |
| 56 | +target_include_directories(HMedia PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/Include) |
| 57 | + |
| 58 | +# 配置预编译头 |
| 59 | +#target_precompile_headers(VGEngine PRIVATE |
| 60 | +# "Include/pch.h" # 项目级头文件 |
| 61 | +#) |
| 62 | + |
| 63 | +# 包 |
| 64 | +#find_package(glad CONFIG REQUIRED) |
| 65 | +find_package(SDL3 CONFIG REQUIRED) |
| 66 | +find_package(RmlUi REQUIRED) |
| 67 | +find_package(SDL3_image CONFIG REQUIRED) |
| 68 | + |
| 69 | +# FFmpeg |
| 70 | +find_package(FFMPEG REQUIRED) |
| 71 | +target_include_directories(HMedia PRIVATE ${FFMPEG_INCLUDE_DIRS}) |
| 72 | +target_link_directories(HMedia PRIVATE ${FFMPEG_LIBRARY_DIRS}) |
| 73 | +target_link_libraries(HMedia PRIVATE ${FFMPEG_LIBRARIES}) |
| 74 | + |
| 75 | +# 链接动态库 |
| 76 | +target_link_libraries(HMedia PRIVATE SDL3::SDL3) |
| 77 | +target_link_libraries(HMedia PRIVATE HCore) |
| 78 | + |
| 79 | +# TODO: 如有需要,请添加测试并安装目标。 |
0 commit comments