cmake_minimum_required(VERSION 3.12) project(lua VERSION 5.5.1 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 lctype.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 lcorolib.c ldblib.c liolib.c lmathlib.c loadlib.c loslib.c lstrlib.c ltablib.c lutf8lib.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} )