cmake_minimum_required(VERSION 3.15) project(lua-cmake-build) include(lua-config.cmake) file(GLOB LUA_SOURCES ${LUA_SRC_DIR}/*.c) foreach (luasourcefile ${LUA_SOURCES}) get_filename_component(testname ${luasourcefile} NAME_WLE) get_filename_component(dirname ${luasourcefile} DIRECTORY) ## skip over lua.c and luac.c string(FIND ${luasourcefile} "lua.c" LUA_C_NAME) if(${LUA_C_NAME} LESS 0) list(APPEND LUA_LIBRARY_SRC ${luasourcefile}) endif() endforeach() add_library(lua_static STATIC ${LUA_LIBRARY_SRC}) set_property(TARGET lua_static PROPERTY OUTPUT_NAME ${LUA_LIBRARY_NAME}_static) set_target_properties(lua_static PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreadedDLL" PREFIX "") install(TARGETS lua_static ARCHIVE DESTINATION ${CMAKE_BINARY_DIR}) add_executable(lua_binary ${LUA_SRC_DIR}/lua.c) target_link_libraries(lua_binary lua_library) set_property(TARGET lua_binary PROPERTY OUTPUT_NAME ${LUA_BINARY_NAME}) set_target_properties(lua_binary PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreadedDLL") add_executable(luac_binary ${LUA_SRC_DIR}/luac.c) target_link_libraries(luac_binary lua_static) set_property(TARGET luac_binary PROPERTY OUTPUT_NAME ${LUAC_BINARY_NAME}) set_target_properties(luac_binary PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreadedDLL") add_definitions(-DLUA_BUILD_AS_DLL) add_library(lua_library SHARED ${LUA_LIBRARY_SRC}) set_property(TARGET lua_library PROPERTY OUTPUT_NAME ${LUA_LIBRARY_NAME}) set_target_properties(lua_library PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreadedDLL" PREFIX "") install(TARGETS lua_binary luac_binary lua_static lua_library RUNTIME DESTINATION ${CMAKE_BINARY_DIR} LIBRARY DESTINATION ${CMAKE_BINARY_DIR} ARCHIVE DESTINATION ${CMAKE_BINARY_DIR} )