cmake_minimum_required(VERSION 3.10) project(BlockLua CXX) # Export compile_commands.json for VSCode IntelliSense set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Output directories to mirror build.bat's build folder set(OUTPUT_DIR ${CMAKE_SOURCE_DIR}/build) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_DIR}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_DIR}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_DIR}) # Global build options to mirror build.bat add_compile_options( -Wall -Werror -m32 -static-libgcc -static-libstdc++ ) # Include paths include_directories( ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/inc/tsfuncs ${CMAKE_SOURCE_DIR}/inc/lua ) # Link directories (for -L.) and libraries from build.bat link_directories( ${CMAKE_SOURCE_DIR} ) # Safe DLL add_library(BlockLua SHARED src/bllua4.cpp) # Ensure output name matches build.bat set_target_properties(BlockLua PROPERTIES OUTPUT_NAME "BlockLua") # Linker flags and libraries if(MSVC) # Not expected with mingw, but keep placeholder else() target_link_libraries(BlockLua PRIVATE psapi lua5.1) endif() # Unsafe DLL (with BLLUA_UNSAFE definition) add_library(BlockLuaUnsafe SHARED src/bllua4.cpp) set_target_properties(BlockLuaUnsafe PROPERTIES OUTPUT_NAME "BlockLua-Unsafe") target_compile_definitions(BlockLuaUnsafe PRIVATE BLLUA_UNSAFE) if(MSVC) # Not expected with mingw, but keep placeholder else() target_link_libraries(BlockLuaUnsafe PRIVATE psapi lua5.1) endif()