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 <lauxlib.h>
-#include <lua.h>
-#include <lualib.h>
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+#include <lauxlib.h>
+#include <lua.h>
+#include <lualib.h>
+
 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