Init
This commit is contained in:
298
unity_examples/CMakeLists.txt
Normal file
298
unity_examples/CMakeLists.txt
Normal file
@@ -0,0 +1,298 @@
|
||||
# Unity Tracy Plugin - CMakeLists.txt
|
||||
# 用于编译 Tracy Unity Native Plugin
|
||||
|
||||
cmake_minimum_required(VERSION 3.15)
|
||||
project(UnityTracyPlugin VERSION 1.0.0)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# ============================================
|
||||
# 配置选项
|
||||
# ============================================
|
||||
|
||||
option(TRACY_ENABLE "启用 Tracy 性能分析" ON)
|
||||
option(TRACY_ON_DEMAND "Tracy 按需分析模式" ON)
|
||||
option(TRACY_NO_EXIT "Tracy 不在退出时断开连接" OFF)
|
||||
option(TRACY_NO_BROADCAST "Tracy 不广播发现消息" OFF)
|
||||
option(TRACY_ONLY_LOCALHOST "Tracy 仅允许本地连接" OFF)
|
||||
|
||||
# ============================================
|
||||
# Tracy 配置
|
||||
# ============================================
|
||||
|
||||
if(TRACY_ENABLE)
|
||||
add_definitions(-DTRACY_ENABLE)
|
||||
message(STATUS "Tracy 性能分析: 启用")
|
||||
else()
|
||||
message(STATUS "Tracy 性能分析: 禁用")
|
||||
endif()
|
||||
|
||||
if(TRACY_ON_DEMAND)
|
||||
add_definitions(-DTRACY_ON_DEMAND)
|
||||
message(STATUS "Tracy 按需模式: 启用")
|
||||
endif()
|
||||
|
||||
if(TRACY_NO_EXIT)
|
||||
add_definitions(-DTRACY_NO_EXIT)
|
||||
endif()
|
||||
|
||||
if(TRACY_NO_BROADCAST)
|
||||
add_definitions(-DTRACY_NO_BROADCAST)
|
||||
endif()
|
||||
|
||||
if(TRACY_ONLY_LOCALHOST)
|
||||
add_definitions(-DTRACY_ONLY_LOCALHOST)
|
||||
endif()
|
||||
|
||||
# ============================================
|
||||
# Tracy 路径配置
|
||||
# ============================================
|
||||
|
||||
# 设置 Tracy 根目录(根据实际情况修改)
|
||||
set(TRACY_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/tracy" CACHE PATH "Tracy 根目录路径")
|
||||
|
||||
if(NOT EXISTS "${TRACY_ROOT}")
|
||||
message(FATAL_ERROR "找不到 Tracy 目录: ${TRACY_ROOT}\n请设置正确的 TRACY_ROOT 路径")
|
||||
endif()
|
||||
|
||||
message(STATUS "Tracy 根目录: ${TRACY_ROOT}")
|
||||
|
||||
# ============================================
|
||||
# 源文件
|
||||
# ============================================
|
||||
|
||||
set(TRACY_SOURCES
|
||||
"${TRACY_ROOT}/public/TracyClient.cpp"
|
||||
)
|
||||
|
||||
set(PLUGIN_SOURCES
|
||||
"SimplifiedPlugin.cpp"
|
||||
${TRACY_SOURCES}
|
||||
)
|
||||
|
||||
# ============================================
|
||||
# 包含目录
|
||||
# ============================================
|
||||
|
||||
include_directories(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
"${TRACY_ROOT}/public"
|
||||
)
|
||||
|
||||
# ============================================
|
||||
# 创建动态库
|
||||
# ============================================
|
||||
|
||||
add_library(UnityTracyPlugin SHARED ${PLUGIN_SOURCES})
|
||||
|
||||
# 设置输出名称
|
||||
set_target_properties(UnityTracyPlugin PROPERTIES
|
||||
OUTPUT_NAME "UnityTracyPlugin"
|
||||
PREFIX "" # 移除 lib 前缀(Linux/macOS)
|
||||
)
|
||||
|
||||
# ============================================
|
||||
# 平台特定配置
|
||||
# ============================================
|
||||
|
||||
if(WIN32)
|
||||
# Windows 配置
|
||||
message(STATUS "配置 Windows 平台")
|
||||
|
||||
# 链接必要的 Windows 库
|
||||
target_link_libraries(UnityTracyPlugin
|
||||
ws2_32 # Winsock
|
||||
dbghelp # Debug Help Library
|
||||
)
|
||||
|
||||
# 输出到 Windows 平台目录
|
||||
set_target_properties(UnityTracyPlugin PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/Unity/Plugins/x86_64"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/Unity/Plugins/x86_64"
|
||||
)
|
||||
|
||||
# Windows 导出符号
|
||||
target_compile_definitions(UnityTracyPlugin PRIVATE
|
||||
WIN32_LEAN_AND_MEAN
|
||||
NOMINMAX
|
||||
)
|
||||
|
||||
elseif(APPLE)
|
||||
# macOS/iOS 配置
|
||||
message(STATUS "配置 Apple 平台")
|
||||
|
||||
# 链接 Apple 框架
|
||||
target_link_libraries(UnityTracyPlugin
|
||||
"-framework Foundation"
|
||||
"-framework CoreFoundation"
|
||||
)
|
||||
|
||||
# macOS 特定设置
|
||||
if(NOT IOS)
|
||||
set_target_properties(UnityTracyPlugin PROPERTIES
|
||||
MACOSX_RPATH TRUE
|
||||
BUILD_WITH_INSTALL_RPATH TRUE
|
||||
INSTALL_NAME_DIR "@rpath"
|
||||
)
|
||||
|
||||
# 输出到 macOS 平台目录
|
||||
set_target_properties(UnityTracyPlugin PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/Unity/Plugins/macOS"
|
||||
)
|
||||
else()
|
||||
# iOS 配置 - 静态库
|
||||
set_target_properties(UnityTracyPlugin PROPERTIES
|
||||
FRAMEWORK FALSE
|
||||
)
|
||||
|
||||
# 输出到 iOS 平台目录
|
||||
set_target_properties(UnityTracyPlugin PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/Unity/Plugins/iOS"
|
||||
)
|
||||
endif()
|
||||
|
||||
elseif(UNIX)
|
||||
# Linux/Android 配置
|
||||
message(STATUS "配置 Linux 平台")
|
||||
|
||||
# 链接必要的 Linux 库
|
||||
target_link_libraries(UnityTracyPlugin
|
||||
pthread # POSIX threads
|
||||
dl # Dynamic linking
|
||||
)
|
||||
|
||||
# 符号可见性
|
||||
set_target_properties(UnityTracyPlugin PROPERTIES
|
||||
CXX_VISIBILITY_PRESET hidden
|
||||
VISIBILITY_INLINES_HIDDEN YES
|
||||
)
|
||||
|
||||
# 输出到 Linux 平台目录
|
||||
set_target_properties(UnityTracyPlugin PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/Unity/Plugins/Linux/x86_64"
|
||||
)
|
||||
|
||||
endif()
|
||||
|
||||
# ============================================
|
||||
# 编译选项
|
||||
# ============================================
|
||||
|
||||
if(MSVC)
|
||||
# Visual Studio 编译器选项
|
||||
target_compile_options(UnityTracyPlugin PRIVATE
|
||||
/W4 # 警告级别 4
|
||||
/WX- # 警告不视为错误
|
||||
/permissive- # 标准一致性模式
|
||||
/MP # 多处理器编译
|
||||
)
|
||||
|
||||
# Release 优化
|
||||
target_compile_options(UnityTracyPlugin PRIVATE
|
||||
$<$<CONFIG:Release>:/O2> # 最大优化
|
||||
$<$<CONFIG:Release>:/Ob2> # 内联展开
|
||||
)
|
||||
else()
|
||||
# GCC/Clang 编译器选项
|
||||
target_compile_options(UnityTracyPlugin PRIVATE
|
||||
-Wall
|
||||
-Wextra
|
||||
-Wno-unused-parameter
|
||||
-fPIC # 位置无关代码
|
||||
-fvisibility=hidden # 隐藏符号
|
||||
)
|
||||
|
||||
# Release 优化
|
||||
target_compile_options(UnityTracyPlugin PRIVATE
|
||||
$<$<CONFIG:Release>:-O3> # 最大优化
|
||||
$<$<CONFIG:Release>:-DNDEBUG> # 禁用断言
|
||||
)
|
||||
endif()
|
||||
|
||||
# ============================================
|
||||
# Android NDK 配置(如果使用 Android)
|
||||
# ============================================
|
||||
|
||||
if(ANDROID)
|
||||
message(STATUS "配置 Android 平台")
|
||||
message(STATUS "Android ABI: ${ANDROID_ABI}")
|
||||
|
||||
# 链接 Android 库
|
||||
target_link_libraries(UnityTracyPlugin
|
||||
log # Android 日志
|
||||
android # Android API
|
||||
)
|
||||
|
||||
# 输出到 Android 平台目录
|
||||
set_target_properties(UnityTracyPlugin PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/Unity/Plugins/Android/${ANDROID_ABI}"
|
||||
)
|
||||
endif()
|
||||
|
||||
# ============================================
|
||||
# 安装配置
|
||||
# ============================================
|
||||
|
||||
install(TARGETS UnityTracyPlugin
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
)
|
||||
|
||||
# ============================================
|
||||
# 构建信息
|
||||
# ============================================
|
||||
|
||||
message(STATUS "========================================")
|
||||
message(STATUS "Unity Tracy Plugin 配置完成")
|
||||
message(STATUS "========================================")
|
||||
message(STATUS "项目版本: ${PROJECT_VERSION}")
|
||||
message(STATUS "C++ 标准: ${CMAKE_CXX_STANDARD}")
|
||||
message(STATUS "构建类型: ${CMAKE_BUILD_TYPE}")
|
||||
message(STATUS "编译器: ${CMAKE_CXX_COMPILER_ID}")
|
||||
message(STATUS "Tracy 启用: ${TRACY_ENABLE}")
|
||||
message(STATUS "Tracy 按需模式: ${TRACY_ON_DEMAND}")
|
||||
message(STATUS "========================================")
|
||||
|
||||
# ============================================
|
||||
# 自定义构建目标
|
||||
# ============================================
|
||||
|
||||
# 清理目标
|
||||
add_custom_target(clean-all
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_BINARY_DIR}/Unity"
|
||||
COMMENT "清理所有输出文件"
|
||||
)
|
||||
|
||||
# 复制到 Unity 项目(需要设置 UNITY_PROJECT_PATH)
|
||||
if(DEFINED ENV{UNITY_PROJECT_PATH})
|
||||
set(UNITY_PROJECT_PATH $ENV{UNITY_PROJECT_PATH})
|
||||
message(STATUS "Unity 项目路径: ${UNITY_PROJECT_PATH}")
|
||||
|
||||
add_custom_command(TARGET UnityTracyPlugin POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
"${CMAKE_BINARY_DIR}/Unity/Plugins"
|
||||
"${UNITY_PROJECT_PATH}/Assets/Plugins"
|
||||
COMMENT "复制 Plugin 到 Unity 项目"
|
||||
)
|
||||
endif()
|
||||
|
||||
# ============================================
|
||||
# 测试(可选)
|
||||
# ============================================
|
||||
|
||||
option(BUILD_TESTS "构建测试程序" OFF)
|
||||
|
||||
if(BUILD_TESTS)
|
||||
enable_testing()
|
||||
|
||||
add_executable(PluginTest
|
||||
test/plugin_test.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(PluginTest UnityTracyPlugin)
|
||||
|
||||
add_test(NAME PluginBasicTest COMMAND PluginTest)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user