adj:重新调整编译。
This commit is contained in:
parent
e78cd51d05
commit
aaf3244297
@ -16,5 +16,5 @@ set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE})
|
|||||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE}/)
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE}/)
|
||||||
|
|
||||||
add_subdirectory(lua)
|
add_subdirectory(lua)
|
||||||
add_subdirectory(libdemo)
|
add_subdirectory(demo)
|
||||||
add_executable(elua main.cpp)
|
add_executable(elua main.cpp)
|
@ -1,11 +1,11 @@
|
|||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
project(libdemo LANGUAGES CXX)
|
project(demo LANGUAGES CXX)
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
add_compile_options(/source-charset:utf-8)
|
add_compile_options(/source-charset:utf-8)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(libdemo SHARED lib.h lib.cxx)
|
add_library(demo SHARED lib.h lib.cxx)
|
||||||
target_link_libraries(libdemo PRIVATE liblua)
|
target_link_libraries(demo PRIVATE lua)
|
@ -1,42 +1,84 @@
|
|||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.10)
|
||||||
|
project(Lua C)
|
||||||
|
|
||||||
# Set the project name and version
|
# 设置C标准
|
||||||
project(LuaProject VERSION 5.4.7 LANGUAGES C)
|
|
||||||
|
|
||||||
# Set the C99 standard
|
|
||||||
set(CMAKE_C_STANDARD 99)
|
set(CMAKE_C_STANDARD 99)
|
||||||
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
# Set the compiler flags to disable C++ exception handling warning for MSVC
|
# 平台特定的设置
|
||||||
if (MSVC)
|
if(WIN32)
|
||||||
add_compile_options(/wd4530)
|
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)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Include directories
|
# 设置源码目录
|
||||||
include_directories(src)
|
set(SRC_DIR src)
|
||||||
|
|
||||||
# Collect all C source files
|
# Lua核心源文件
|
||||||
file(GLOB LUA_SOURCES ${CMAKE_CURRENT_LIST_DIR}/src/*.c)
|
set(CORE_SOURCES
|
||||||
|
${SRC_DIR}/lapi.c
|
||||||
# Exclude lua.c and luac.c from the library sources
|
${SRC_DIR}/lcode.c
|
||||||
list(REMOVE_ITEM LUA_SOURCES
|
${SRC_DIR}/lctype.c
|
||||||
${CMAKE_CURRENT_LIST_DIR}/src/lua.c
|
${SRC_DIR}/ldebug.c
|
||||||
${CMAKE_CURRENT_LIST_DIR}/src/luac.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
|
||||||
)
|
)
|
||||||
|
|
||||||
# Build the static library
|
# Lua库源文件
|
||||||
add_library(liblua STATIC ${LUA_SOURCES})
|
set(LIB_SOURCES
|
||||||
target_include_directories(liblua PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
|
${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
|
||||||
|
)
|
||||||
|
|
||||||
# Enable position-independent code for better portability
|
# Lua可执行文件源文件
|
||||||
set_target_properties(liblua PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
set(LUA_SOURCES ${SRC_DIR}/lua.c)
|
||||||
|
set(LUAC_SOURCES ${SRC_DIR}/luac.c)
|
||||||
|
|
||||||
# Define preprocessor macros
|
# 添加Lua库
|
||||||
target_compile_definitions(liblua PRIVATE LUA_COMPAT_5_3 LUA_BUILD_AS_DLL)
|
add_library(lua STATIC ${CORE_SOURCES} ${LIB_SOURCES})
|
||||||
|
target_include_directories(lua PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
|
||||||
|
target_compile_definitions(lua PRIVATE LUA_COMPAT_5_3 ${PLATFORM_DEFINITIONS})
|
||||||
|
|
||||||
# Target for the Lua interpreter (lua.exe)
|
# 添加Lua可执行文件
|
||||||
add_executable(lua src/lua.c)
|
add_executable(lua_bin ${LUA_SOURCES})
|
||||||
target_link_libraries(lua PRIVATE liblua)
|
target_link_libraries(lua_bin lua ${PLATFORM_LIBS})
|
||||||
|
|
||||||
# Target for the Lua compiler (luac.exe)
|
# 添加Lua编译器可执行文件
|
||||||
add_executable(luac src/luac.c)
|
add_executable(luac_bin ${LUAC_SOURCES})
|
||||||
target_link_libraries(luac PRIVATE liblua)
|
target_link_libraries(luac_bin lua ${PLATFORM_LIBS})
|
||||||
|
|
||||||
|
# 安装目标
|
||||||
|
install(TARGETS lua lua_bin luac_bin
|
||||||
|
RUNTIME DESTINATION bin
|
||||||
|
LIBRARY DESTINATION lib
|
||||||
|
ARCHIVE DESTINATION lib)
|
Loading…
x
Reference in New Issue
Block a user