166 lines
5.2 KiB
CMake
166 lines
5.2 KiB
CMake
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/source-charset:utf-8>")
|
|
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/execution-charset:utf-8>")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
|
|
# 设置处理
|
|
if (USE_RENDER)
|
|
if (DL_DISABLE_RENDER)
|
|
message(SEND_ERROR ${PROJECT_NAME}"必须启动绘图系统,将会编译失败(DL_DISABLE_RENDER)!")
|
|
endif()
|
|
endif()
|
|
if (NOT DEFINED USE_CONSOLE)
|
|
set(USE_CONSOLE true)
|
|
endif()
|
|
if(WIN32 AND (NOT DEFINED USE_CRASH_RPT))
|
|
set(USE_CRASH_RPT true)
|
|
endif()
|
|
if(USE_CRASH_RPT)
|
|
add_compile_definitions(DL_USE_CRASH_RPT)
|
|
endif()
|
|
|
|
# 项目路径
|
|
message("项目路径:" ${PROJECT_SOURCE_DIR})
|
|
message("资源路径:" ${PATH_RES})
|
|
message("输出路径:" ${PROJECT_BINARY_DIR})
|
|
|
|
# 添加源、设置可执行文件
|
|
set(IS_FIRST TRUE)
|
|
foreach(dir ${PATH_SRC})
|
|
if(${IS_FIRST})
|
|
set(IS_FIRST FALSE)
|
|
message("代码路径:" ${dir})
|
|
# 第一个作为根目录
|
|
include_directories(${dir})
|
|
else()
|
|
message("其他代码路径: ${dir}")
|
|
endif()
|
|
aux_source_directory(${dir} SRC_LIST)
|
|
endforeach()
|
|
|
|
list(LENGTH SRC_LIST SRC_LIST_NUM)
|
|
message("源文件数:" ${SRC_LIST_NUM})
|
|
|
|
|
|
# 目标文件夹
|
|
set(PATH_OUT ${PROJECT_BINARY_DIR}/bin)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PATH_OUT})
|
|
|
|
# 安卓为动态链接库
|
|
if (NOT CMAKE_SYSTEM_NAME MATCHES "Android")
|
|
if(USE_CONSOLE)
|
|
add_compile_definitions(DL_USE_CONSOLE)
|
|
add_executable (${PROJECT_NAME} ${SRC_LIST})
|
|
else()
|
|
add_executable (${PROJECT_NAME} WIN32 ${SRC_LIST})
|
|
endif()
|
|
else()
|
|
add_library (${PROJECT_NAME} SHARED ${SRC_LIST})
|
|
endif()
|
|
|
|
if (NOT CMAKE_SYSTEM_NAME MATCHES "Android")
|
|
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 23)
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
endif()
|
|
|
|
# dl库
|
|
include_directories(${CMAKE_SOURCE_DIR}/dl)
|
|
target_link_libraries(${PROJECT_NAME} dlx)
|
|
|
|
# fmt
|
|
include_directories(${CMAKE_SOURCE_DIR}/third/fmt/include)
|
|
# json
|
|
include_directories(${CMAKE_SOURCE_DIR}/third/json)
|
|
# tinyxml2
|
|
include_directories(${CMAKE_SOURCE_DIR}/third/tinyxml2)
|
|
# asio
|
|
include_directories(${CMAKE_SOURCE_DIR}/third/asio/include)
|
|
# angelscript
|
|
include_directories(${CMAKE_SOURCE_DIR}/third/angelscript/angelscript/include)
|
|
# lua
|
|
include_directories(${CMAKE_SOURCE_DIR}/third/lua)
|
|
# LuaBridge3
|
|
include_directories(${CMAKE_SOURCE_DIR}/third/LuaBridge3/Source)
|
|
# infoware
|
|
include_directories(${CMAKE_SOURCE_DIR}/third/infoware/include)
|
|
# simd
|
|
include_directories(${CMAKE_SOURCE_DIR}/third/simde)
|
|
# magic enmu
|
|
include_directories(${CMAKE_SOURCE_DIR}/third/magic_enum/include)
|
|
# CrashRpt
|
|
if(WIN32 AND USE_CRASH_RPT)
|
|
include_directories(${CMAKE_SOURCE_DIR}/third/CrashRpt/include)
|
|
target_link_libraries(${PROJECT_NAME} ${CMAKE_SOURCE_DIR}/third/CrashRpt/${ARCH}/CrashRpt1403.lib)
|
|
endif()
|
|
|
|
|
|
# dl资源文件夹
|
|
set(DL_PATH_RES ${CMAKE_SOURCE_DIR}/res)
|
|
# vld资源文件夹
|
|
set(DL_PATH_VLD ${CMAKE_SOURCE_DIR}/third/vld/bin/${ARCH})
|
|
# CrashRpt资源文件夹
|
|
set(DL_PATH_CR ${CMAKE_SOURCE_DIR}/third/CrashRpt/${ARCH})
|
|
|
|
# 创建软链接、复制必要资源
|
|
add_custom_command(
|
|
TARGET ${PROJECT_NAME} PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E remove_directory ${PATH_OUT}
|
|
COMMAND ${CMAKE_COMMAND} -E create_symlink ${PATH_RES} ${PATH_OUT}
|
|
COMMENT "创建资源软链接,并复制资源"
|
|
)
|
|
# 复制必要资源
|
|
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.gitignore")
|
|
add_custom_command(
|
|
TARGET ${PROJECT_NAME} PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/project/template.gitignore ${CMAKE_CURRENT_SOURCE_DIR}/.gitignore
|
|
COMMENT "复制.gitignore文件模板"
|
|
)
|
|
endif()
|
|
|
|
# 复制dl必要资源(重新生成代码的时候才会触发)
|
|
if (USE_RENDER)
|
|
add_custom_command(TARGET ${PROJECT_NAME}
|
|
PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${DL_PATH_RES}/dl ${PATH_OUT}/dl)
|
|
endif()
|
|
|
|
if(MSVC)
|
|
# 复制vld
|
|
if (CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
add_custom_command(TARGET ${PROJECT_NAME}
|
|
PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${DL_PATH_VLD} ${PATH_OUT})
|
|
if(NOT EXISTS "${PATH_RES}/vld.ini")
|
|
add_custom_command(TARGET ${PROJECT_NAME}
|
|
PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/third/vld/vld.ini ${PATH_OUT})
|
|
endif()
|
|
endif()
|
|
# 复制CrashRpt
|
|
if (CMAKE_BUILD_TYPE MATCHES "Release" AND USE_CRASH_RPT)
|
|
add_custom_command(TARGET ${PROJECT_NAME}
|
|
PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
${DL_PATH_CR}/CrashRpt1403.dll
|
|
${DL_PATH_CR}/CrashSender1403.exe
|
|
${CMAKE_SOURCE_DIR}/third/CrashRpt/crashrpt_lang.ini
|
|
${PATH_OUT})
|
|
endif()
|
|
endif()
|
|
|
|
# 子项目暂不安装
|
|
if (false)
|
|
|
|
install(DIRECTORY ${PATH_RES}/ DESTINATION bin/${PROJECT_NAME})
|
|
if (USE_RENDER)
|
|
install(DIRECTORY ${CMAKE_SOURCE_DIR}/res/dl DESTINATION bin/${PROJECT_NAME})
|
|
endif()
|
|
if (CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
install(DIRECTORY ${DL_PATH_VLD}/ DESTINATION bin/${PROJECT_NAME})
|
|
install(FILES ${CMAKE_SOURCE_DIR}/third/vld/vld.ini DESTINATION bin/${PROJECT_NAME})
|
|
endif()
|
|
|
|
install(TARGETS ${PROJECT_NAME}
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/${PROJECT_NAME})
|
|
|
|
endif() |