diff --git a/projects/VSCode/.vscode/launch.json b/projects/VSCode/.vscode/launch.json index 8c8a67ead..b65aa1c19 100644 --- a/projects/VSCode/.vscode/launch.json +++ b/projects/VSCode/.vscode/launch.json @@ -5,67 +5,7 @@ "version": "0.2.0", "configurations": [ { - "name": "(WIN) Debug", - "type": "cppdbg", - "request": "launch", - "program": "${workspaceFolder}/game.exe", - "args": [], - "stopAtEntry": false, - "cwd": "${workspaceFolder}", - "environment": [], - "externalConsole": false, - "MIMode": "gdb", - "miDebuggerPath": "C:/raylib/mingw/bin/gdb.exe", - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": false - } - ], - "preLaunchTask": "(WIN) build debug" - }, - { - "name": "(WIN) Run", - "type": "cppdbg", - "request": "launch", - "program": "${workspaceFolder}/game.exe", - "args": [], - "stopAtEntry": false, - "cwd": "${workspaceFolder}", - "environment": [], - "externalConsole": false, - "MIMode": "gdb", - "miDebuggerPath": "C:/raylib/mingw/bin/gdb.exe", - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": false - } - ], - "preLaunchTask": "(WIN) build release" - }, - { - "name": "(OSX) Debug", - "type": "lldb", - "request": "launch", - "program": "${workspaceFolder}/game", - "args": [], - "cwd": "${workspaceFolder}", - "preLaunchTask": "(OSX) build debug" - }, - { - "name": "(OSX) Run", - "type": "lldb", - "request": "launch", - "program": "${workspaceFolder}/game", - "args": [], - "cwd": "${workspaceFolder}", - "preLaunchTask": "(OSX) build release" - }, - { - "name": "(GNU) Debug", + "name": "Debug", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/game", @@ -75,7 +15,6 @@ "environment": [], "externalConsole": false, "MIMode": "gdb", - "miDebuggerPath": "/usr/bin/gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", @@ -83,28 +22,39 @@ "ignoreFailures": false } ], - "preLaunchTask": "(GNU) build debug" + "windows": { + "miDebuggerPath": "C:/raylib/mingw/bin/gdb.exe", + }, + "osx": { + "MIMode": "lldb" + }, + "linux": { + "miDebuggerPath": "/usr/bin/gdb", + }, + "preLaunchTask": "build debug" }, { - "name": "(GNU) Run", + "name": "Run", "type": "cppdbg", "request": "launch", - "program": "${workspaceFolder}/game", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, + "program": "${workspaceFolder}/game", "MIMode": "gdb", - "miDebuggerPath": "/usr/bin/gdb", - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": false - } - ], - "preLaunchTask": "(GNU) build release" + "windows": { + "program": "${workspaceFolder}/game.exe", + "miDebuggerPath": "C:/raylib/mingw/bin/gdb.exe" + }, + "osx": { + "MIMode": "lldb" + }, + "linux": { + "miDebuggerPath": "/usr/bin/gdb" + }, + "preLaunchTask": "build release", } ] } diff --git a/projects/VSCode/.vscode/tasks.json b/projects/VSCode/.vscode/tasks.json index d94a2d692..6106c05f5 100644 --- a/projects/VSCode/.vscode/tasks.json +++ b/projects/VSCode/.vscode/tasks.json @@ -4,67 +4,47 @@ "version": "2.0.0", "tasks": [ { - "label": "(WIN) build release", - "type": "process", - "command": "C:/raylib/mingw/bin/mingw32-make.exe", - "args": [ - "PLATFORM=PLATFORM_DESKTOP", - "RAYLIB_PATH=C:/raylib/raylib", - ], - "group": "build" - }, - { - "label": "(WIN) build debug", - "type": "process", - "command": "C:/raylib/mingw/bin/mingw32-make.exe", - "args": [ - "PLATFORM=PLATFORM_DESKTOP", - "RAYLIB_PATH=C:/raylib/raylib", - "DEBUGGING=TRUE" - ], - "group": "build" - }, - { - "label": "(OSX) build debug", - "type": "process", - "command": "make", - "args": [ - "PLATFORM=PLATFORM_DESKTOP", - "RAYLIB_PATH=", - "DEBUGGING=TRUE" - ], - "group": "build" - }, - { - "label": "(OSX) build release", - "type": "process", - "command": "make", - "args": [ - "PLATFORM=PLATFORM_DESKTOP", - "RAYLIB_PATH=", - ], - "group": "build" - }, - { - "label": "(GNU) build debug", + "label": "build debug", "type": "process", "command": "make", "args": [ "PLATFORM=PLATFORM_DESKTOP", "DEBUGGING=TRUE" ], + "windows": { + "command": "C:/raylib/mingw/bin/mingw32-make.exe", + "args": [ + "RAYLIB_PATH=C:/raylib/raylib" + ], + }, + "osx": { + "args": [ + "RAYLIB_PATH=/Users/murray/work/ray/raylib" + ], + }, "group": { "kind": "build", "isDefault": true } }, { - "label": "(GNU) build release", + "label": "build release", "type": "process", "command": "make", "args": [ "PLATFORM=PLATFORM_DESKTOP", ], + "windows": { + "command": "C:/raylib/mingw/bin/mingw32-make.exe", + "args": [ + "RAYLIB_PATH=C:/raylib/raylib", + ], + }, + "osx": { + "args": [ + "RAYLIB_PATH=/Users/murray/work/ray/raylib", + ], + }, "group": "build" } ] diff --git a/projects/VSCode/Makefile b/projects/VSCode/Makefile index 9794c1ab2..83e26053b 100644 --- a/projects/VSCode/Makefile +++ b/projects/VSCode/Makefile @@ -151,6 +151,9 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) ifeq ($(PLATFORM_OS),LINUX) MAKE = make endif + ifeq ($(PLATFORM_OS),OSX) + MAKE = make + endif endif # Define compiler flags: @@ -279,17 +282,22 @@ ifeq ($(PLATFORM),PLATFORM_WEB) LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.bc endif +# Define a recursive wildcard function +rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d)) + # Define all source files required -PROJECT_SOURCE_FILES ?= main.c +SRC_DIR = src +OBJ_DIR = obj # Define all object files from source files -OBJS = $(patsubst %.c, %.o, $(PROJECT_SOURCE_FILES)) +SRC = $(call rwildcard, *.c, *.h) +OBJS = $(SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) # For Android platform we call a custom Makefile.Android ifeq ($(PLATFORM),PLATFORM_ANDROID) MAKEFILE_PARAMS = -f Makefile.Android export PROJECT_NAME - export PROJECT_SOURCE_FILES + export SRC_DIR else MAKEFILE_PARAMS = $(PROJECT_NAME) endif @@ -305,7 +313,8 @@ $(PROJECT_NAME): $(OBJS) # Compile source files # NOTE: This pattern will compile every module defined on $(OBJS) -%.o: %.c +#%.o: %.c +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(CC) -c $< -o $@ $(CFLAGS) $(INCLUDE_PATHS) -D$(PLATFORM) # Clean everything