From 10064f31c20411c78e825fee60507ba7479778d1 Mon Sep 17 00:00:00 2001 From: Patrick Schwarzer Date: Sun, 20 Apr 2025 05:32:22 +0200 Subject: [PATCH] Remove include, lib Update launch.json to include Linux specific debug config Update CMakeList to compile on Linux --- .gitignore | 2 ++ .vscode/launch.json | 70 +++++++++++++++++++++++++++--------------- engine/CMakeLists.txt | 25 ++++++++++----- engine/main.cpp | 2 -- include/luajit.h | 4 +-- lib/lua51.lib | Bin 60628 -> 0 bytes lib/luajit.lib | Bin 32932 -> 0 bytes 7 files changed, 66 insertions(+), 37 deletions(-) delete mode 100644 lib/lua51.lib delete mode 100644 lib/luajit.lib diff --git a/.gitignore b/.gitignore index 73e536c..7545739 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .vs/ build/ +include/ +lib/ \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index e5c1400..7da00af 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,26 +1,46 @@ { - "version": "0.2.0", - "configurations": [ - { - "name": "Debug Engine", - "type": "cppvsdbg", - "request": "launch", - "program": "${workspaceFolder}/build/engine/Debug/engine.exe", // Path to your executable - "args": [], - "stopAtEntry": false, - "cwd": "${workspaceFolder}", - "environment": [], - "externalConsole": false, - "preLaunchTask": "build engine", // This will run the "build engine" task before launching - "miDebuggerPath": "C:/mingw-w64/bin/gdb.exe", // Specify the correct path to your debugger - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": true - } - ] - } - ] - } - \ No newline at end of file + "version": "0.2.0", + "configurations": [ + { + "name": "Debug Engine (Windows)", + "type": "cppvsdbg", + "request": "launch", + "program": "${workspaceFolder}/build/engine/Debug/engine.exe", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [], + "externalConsole": false, + "preLaunchTask": "build engine", + "miDebuggerPath": "C:/mingw-w64/bin/gdb.exe", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + }, + { + "name": "Debug Engine (Linux)", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/build/engine/engine", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [], + "externalConsole": true, + "MIMode": "gdb", + "miDebuggerPath": "/usr/bin/gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ], + "preLaunchTask": "build engine" + } + ] +} diff --git a/engine/CMakeLists.txt b/engine/CMakeLists.txt index f2f851b..9cdf8a7 100644 --- a/engine/CMakeLists.txt +++ b/engine/CMakeLists.txt @@ -15,17 +15,26 @@ set(SOURCES include_directories(${CMAKE_SOURCE_DIR}/include) link_directories(${CMAKE_SOURCE_DIR}/lib) -file(GLOB SDL2_LIB "${CMAKE_SOURCE_DIR}/lib/*.lib") -file(GLOB LUAJIT_LIB "${CMAKE_SOURCE_DIR}/lib/*.lib") - add_executable(engine ${SOURCES}) if(WIN32) + file(GLOB SDL2_LIB "${CMAKE_SOURCE_DIR}/lib/*.lib") + file(GLOB LUAJIT_LIB "${CMAKE_SOURCE_DIR}/lib/*.lib") + + target_link_libraries(engine + ${SDL2_LIB} + ${CMAKE_SOURCE_DIR}/lib/luajit.lib + ) elseif(UNIX) + include_directories(${SDL2_INCLUDE_DIRS} ${LUAJIT_INCLUDE_DIRS}) + link_directories(${SDL2_LIBRARY_DIRS} ${LUAJIT_LIBRARY_DIRS}) + + target_link_libraries(engine + ${SDL2_LIBRARIES} + ${LUAJIT_LIBRARIES} + luajit + dl # just in case LuaJIT needs dynamic linking + m # math lib, commonly needed + ) endif() -# Link all required libraries -target_link_libraries(engine - ${SDL2_LIB} - ${CMAKE_SOURCE_DIR}/lib/luajit.lib -) diff --git a/engine/main.cpp b/engine/main.cpp index e0d65e8..3939dd2 100644 --- a/engine/main.cpp +++ b/engine/main.cpp @@ -3,8 +3,6 @@ #include #include -#include - extern "C" { #include #include diff --git a/include/luajit.h b/include/luajit.h index b74e19a..82079b8 100644 --- a/include/luajit.h +++ b/include/luajit.h @@ -30,9 +30,9 @@ #include "lua.h" -#define LUAJIT_VERSION "LuaJIT 2.1.1745076535" +#define LUAJIT_VERSION "LuaJIT 2.1.1745036828" #define LUAJIT_VERSION_NUM 20199 /* Deprecated. */ -#define LUAJIT_VERSION_SYM luaJIT_version_2_1_1745076535 +#define LUAJIT_VERSION_SYM luaJIT_version_2_1_1745036828 #define LUAJIT_COPYRIGHT "Copyright (C) 2005-2025 Mike Pall" #define LUAJIT_URL "https://luajit.org/" diff --git a/lib/lua51.lib b/lib/lua51.lib deleted file mode 100644 index 9812b34045ea829939e4a95869cffaa5fd6b52c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60628 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 Vx#h{<=gNKiBjxY&8o@Q=e*shuDs2D&