jrdeng / jrdeng.github.io

I'm using `jrdeng/i2site`
https://wuming.me
1 stars 0 forks source link

Lua 5.4.x CMakeLists.txt #8

Open jrdeng opened 4 years ago

jrdeng commented 4 years ago
cmake_minimum_required(VERSION 3.12)

project(Lua)

add_definitions(-DLUA_COMPAT_5_3)
if(UNIX)
    add_definitions(-DLUA_USE_LINUX)
endif(UNIX)

### force options
if(WIN32)
    add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
    add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
endif()

# see https://www.lua.org/manual/5.4/readme.html#other

### build lib
set(C_FILES 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 lauxlib.c lbaselib.c lcorolib.c ldblib.c liolib.c lmathlib.c loadlib.c loslib.c lstrlib.c ltablib.c lutf8lib.c linit.c)
# prepend 'src/'
list(TRANSFORM C_FILES PREPEND "src/")
# in C++ style
set_source_files_properties(${C_FILES} PROPERTIES LANGUAGE CXX)
add_library(lua STATIC ${C_FILES})

### build interpreter
set(C_FILES "src/lua.c")
set_source_files_properties(${C_FILES} PROPERTIES LANGUAGE CXX)
add_executable(lua-interpreter ${C_FILES})
target_link_libraries(lua-interpreter lua)
if(UNIX)
    target_link_libraries(lua-interpreter m dl)
endif(UNIX)
set_target_properties(lua-interpreter PROPERTIES OUTPUT_NAME lua)

### build compiler
set(C_FILES "src/luac.c")
set_source_files_properties(${C_FILES} PROPERTIES LANGUAGE CXX)
add_executable(luac ${C_FILES})
target_link_libraries(luac lua)
if(UNIX)
    target_link_libraries(luac m dl)
endif(UNIX)

# install target
install(TARGETS lua
    RUNTIME DESTINATION lib
    LIBRARY DESTINATION lib
    ARCHIVE DESTINATION lib
)
install(TARGETS lua-interpreter luac
    RUNTIME DESTINATION bin
)
install(FILES src/lua.hpp src/lua.h src/lualib.h src/lauxlib.h src/luaconf.h
    DESTINATION include
)
medetasi commented 3 years ago

你好,文件的 LANGUAGE 属性应该不用设置为 CXX 吧? windows下clion用这份文件编译出的lua.exe有问题,执行什么反应都没有。传文件没反应,不传参数直接运行也不能进入交互模式。 改成C或者删掉这几行重编就没问题了。

jrdeng commented 3 years ago

你好,文件的 LANGUAGE 属性应该不用设置为 CXX 吧? windows下clion用这份文件编译出的lua.exe有问题,执行什么反应都没有。传文件没反应,不传参数直接运行也不能进入交互模式。 改成C或者删掉这几行重编就没问题了。

谢谢comment,加CXX是因为我其他项目用的是C++的方式引用Lua,单独build Lua或者用C方式引用的话可以选择不设置CXX的。

然后Clion的问题我不太确定,因为我测试是直接用cmake 命令行 -G "Visual Studio 15 2017 Win64" 编译的,运行没有遇到什么问题。 你能提供更多信息或者抓些log看看么?