mirror of
https://gitcode.com/JianFeeeee/LuaCangjia_api.git
synced 2026-09-20 08:58:13 +00:00
- lib/lua 替换为 Lua 5.1.5 官方源码; CMakeLists 删除 5.1 不存在的 lcorolib.c/lctype.c/lutf8lib.c/lbitlib.c - 补充 lua.hpp C++ 包装头(5.1 官方不提供, 保持桥接 include 路径不变) - LUA_OK 兼容宏: 5.1 无此定义(成功返回值为 0) - luaL_tolstring 兼容: 5.1 无此 API, l_print 改用 lua_tostring + lua_typename 兜底(#if LUA_VERSION_NUM >= 502 条件编译, 弹栈逻辑同步分支) - luaL_setfuncs 兼容: 5.1 无此 API, push_tty_file 改手动循环注册 - I/O 重定向沿用 Registry 方案(自 5.2.4 分支同步), typed interop 版本自适应断言同步 - 验证: GTest 44/44 通过
79 lines
1.6 KiB
CMake
Executable File
79 lines
1.6 KiB
CMake
Executable File
cmake_minimum_required(VERSION 3.12)
|
|
project(lua VERSION 5.1.5 LANGUAGES C)
|
|
|
|
# 基础配置
|
|
set(CMAKE_C_STANDARD 99)
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -Wall -Wextra")
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
# 检测目标系统 - 通过编译器名称检测
|
|
set(IS_WINDOWS FALSE)
|
|
if(CMAKE_C_COMPILER MATCHES "mingw" OR CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
|
set(IS_WINDOWS TRUE)
|
|
endif()
|
|
|
|
# 根据目标系统配置
|
|
if(IS_WINDOWS)
|
|
message(STATUS "Configuring for Windows/MinGW")
|
|
add_compile_definitions(LUA_USE_WINDOWS LUA_COMPAT_5_3)
|
|
list(APPEND EXTRA_LIBS "")
|
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
message(STATUS "Configuring for Linux/HarmonyOS")
|
|
add_compile_definitions(LUA_USE_LINUX LUA_COMPAT_5_3)
|
|
list(APPEND EXTRA_LIBS dl)
|
|
else()
|
|
message(STATUS "Configuring for generic Unix")
|
|
add_compile_definitions(LUA_USE_POSIX LUA_COMPAT_5_3)
|
|
list(APPEND EXTRA_LIBS dl)
|
|
endif()
|
|
|
|
# Lua 核心文件列表
|
|
file(GLOB LUA_CORE_SOURCES
|
|
lapi.c
|
|
lcode.c
|
|
ldebug.c
|
|
ldo.c
|
|
ldump.c
|
|
lfunc.c
|
|
lgc.c
|
|
llex.c
|
|
lmem.c
|
|
lobject.c
|
|
lopcodes.c
|
|
lparser.c
|
|
lstate.c
|
|
lstring.c
|
|
ltable.c
|
|
ltm.c
|
|
lundump.c
|
|
lvm.c
|
|
lzio.c
|
|
)
|
|
|
|
# Lua 库文件列表
|
|
file(GLOB LUA_LIB_SOURCES
|
|
lauxlib.c
|
|
lbaselib.c
|
|
ldblib.c
|
|
liolib.c
|
|
lmathlib.c
|
|
loadlib.c
|
|
loslib.c
|
|
lstrlib.c
|
|
ltablib.c
|
|
linit.c
|
|
)
|
|
|
|
# 特殊源文件的编译器优化
|
|
set_source_files_properties(
|
|
llex.c
|
|
lparser.c
|
|
lcode.c
|
|
PROPERTIES COMPILE_FLAGS "-Os"
|
|
)
|
|
|
|
add_library(lua STATIC
|
|
${LUA_CORE_SOURCES}
|
|
${LUA_LIB_SOURCES}
|
|
)
|