From 4ac3d4c0b472a43917f42b73ead8ed1ff5cca434 Mon Sep 17 00:00:00 2001 From: taynpg Date: Wed, 12 Feb 2025 17:00:05 +0800 Subject: [PATCH] =?UTF-8?q?comp=EF=BC=9A=E7=BC=96=E8=AF=91=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/lib.h | 8 ++--- lua/CMakeLists.txt | 81 ++++++++++------------------------------------ 2 files changed, 21 insertions(+), 68 deletions(-) diff --git a/demo/lib.h b/demo/lib.h index addf0be..de3a4c5 100644 --- a/demo/lib.h +++ b/demo/lib.h @@ -1,14 +1,14 @@ #ifndef LIB_HEADER #define LIB_HEADER -#include -#include -#include - #ifdef __cplusplus extern "C" { #endif +#include +#include +#include + int luaopen_mylib(lua_State* L); int c_multiply(lua_State* L); diff --git a/lua/CMakeLists.txt b/lua/CMakeLists.txt index 4431b3b..edfb1ed 100644 --- a/lua/CMakeLists.txt +++ b/lua/CMakeLists.txt @@ -1,81 +1,34 @@ -cmake_minimum_required(VERSION 3.10) -project(Lua C) +cmake_minimum_required(VERSION 3.16) +project(Lua VERSION 5.4.7 LANGUAGES C) -# 设置C标准 set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED ON) -# 平台特定的设置 -if(WIN32) - set(PLATFORM_DEFINITIONS -DLUA_BUILD_AS_DLL) - set(PLATFORM_LIBS "") - set(CMAKE_SHARED_LIBRARY_PREFIX "") - set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll") - set(CMAKE_EXECUTABLE_SUFFIX ".exe") -else() - set(PLATFORM_DEFINITIONS -DLUA_USE_LINUX) - set(PLATFORM_LIBS -lm -ldl -Wl,-E) +if (MSVC) + add_compile_options(/wd4530) endif() -# 设置源码目录 -set(SRC_DIR src) +include_directories(src) +file(GLOB LUA_SOURCES ${CMAKE_CURRENT_LIST_DIR}/src/*.c) -# Lua核心源文件 -set(CORE_SOURCES - ${SRC_DIR}/lapi.c - ${SRC_DIR}/lcode.c - ${SRC_DIR}/lctype.c - ${SRC_DIR}/ldebug.c - ${SRC_DIR}/ldo.c - ${SRC_DIR}/ldump.c - ${SRC_DIR}/lfunc.c - ${SRC_DIR}/lgc.c - ${SRC_DIR}/llex.c - ${SRC_DIR}/lmem.c - ${SRC_DIR}/lobject.c - ${SRC_DIR}/lopcodes.c - ${SRC_DIR}/lparser.c - ${SRC_DIR}/lstate.c - ${SRC_DIR}/lstring.c - ${SRC_DIR}/ltable.c - ${SRC_DIR}/ltm.c - ${SRC_DIR}/lundump.c - ${SRC_DIR}/lvm.c - ${SRC_DIR}/lzio.c +# Exclude lua.c and luac.c from the library sources +list(REMOVE_ITEM LUA_SOURCES + ${CMAKE_CURRENT_LIST_DIR}/src/lua.c + ${CMAKE_CURRENT_LIST_DIR}/src/luac.c ) -# Lua库源文件 -set(LIB_SOURCES - ${SRC_DIR}/lauxlib.c - ${SRC_DIR}/lbaselib.c - ${SRC_DIR}/lcorolib.c - ${SRC_DIR}/ldblib.c - ${SRC_DIR}/liolib.c - ${SRC_DIR}/lmathlib.c - ${SRC_DIR}/loadlib.c - ${SRC_DIR}/loslib.c - ${SRC_DIR}/lstrlib.c - ${SRC_DIR}/ltablib.c - ${SRC_DIR}/lutf8lib.c - ${SRC_DIR}/linit.c -) - -# Lua可执行文件源文件 -set(LUA_SOURCES ${SRC_DIR}/lua.c) -set(LUAC_SOURCES ${SRC_DIR}/luac.c) - -# 添加Lua库 -add_library(lua STATIC ${CORE_SOURCES} ${LIB_SOURCES}) +# Build the static library +add_library(lua STATIC ${LUA_SOURCES}) target_include_directories(lua PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src) -target_compile_definitions(lua PRIVATE LUA_COMPAT_5_3 ${PLATFORM_DEFINITIONS}) +target_compile_definitions(lua PRIVATE LUA_COMPAT_5_3) # 添加Lua可执行文件 -add_executable(lua_bin ${LUA_SOURCES}) -target_link_libraries(lua_bin lua ${PLATFORM_LIBS}) +add_executable(lua_bin src/lua.c) +target_link_libraries(lua_bin PRIVATE lua) # 添加Lua编译器可执行文件 -add_executable(luac_bin ${LUAC_SOURCES}) -target_link_libraries(luac_bin lua ${PLATFORM_LIBS}) +add_executable(luac_bin src/luac.c) +target_link_libraries(luac_bin PRIVATE lua) # 安装目标 install(TARGETS lua lua_bin luac_bin