aaara si, makes, cmakes i gitignores com toca

This commit is contained in:
2025-03-24 12:17:53 +01:00
parent a7c0b7d8c6
commit 857a0c05f1
3 changed files with 118 additions and 21 deletions

109
.gitignore vendored
View File

@@ -1,4 +1,107 @@
*.exe demo4_sprites
*.dll
*.out
build/ build/
# ---> C++
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
# ---> macOS
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# ---> Windows
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# ---> Linux
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*

View File

@@ -6,7 +6,7 @@ set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Opciones comunes de compilación # Opciones comunes de compilación
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Os") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Os -ffunction-sections -fdata-sections")
# Buscar SDL3 automáticamente # Buscar SDL3 automáticamente
find_package(SDL3 REQUIRED) find_package(SDL3 REQUIRED)
@@ -24,32 +24,26 @@ if(NOT SOURCE_FILES)
message(FATAL_ERROR "No se encontraron archivos fuente en el directorio 'source/'. Verifica la ruta.") message(FATAL_ERROR "No se encontraron archivos fuente en el directorio 'source/'. Verifica la ruta.")
endif() endif()
# Nombre del ejecutable
set(EXECUTABLE_NAME demo4_sprites)
# Detectar la plataforma y configuraciones específicas # Detectar la plataforma y configuraciones específicas
if(WIN32) if(WIN32)
set(PLATFORM windows) set(PLATFORM windows)
set(LINK_LIBS ${SDL3_LIBRARIES} mingw32 ws2_32) set(LINK_LIBS ${SDL3_LIBRARIES} mingw32 ws2_32)
set(EXECUTABLE_EXTENSION ".exe")
elseif(UNIX AND NOT APPLE) elseif(UNIX AND NOT APPLE)
set(PLATFORM linux) set(PLATFORM linux)
set(LINK_LIBS ${SDL3_LIBRARIES}) set(LINK_LIBS ${SDL3_LIBRARIES})
set(EXECUTABLE_EXTENSION ".out")
elseif(APPLE) elseif(APPLE)
set(PLATFORM macos) set(PLATFORM macos)
set(LINK_LIBS ${SDL3_LIBRARIES}) set(LINK_LIBS ${SDL3_LIBRARIES})
set(EXECUTABLE_EXTENSION ".out")
endif() endif()
# Incluir directorios de SDL3 # Incluir directorios de SDL3
include_directories(${SDL3_INCLUDE_DIRS}) include_directories(${SDL3_INCLUDE_DIRS})
# Añadir el ejecutable # Añadir el ejecutable reutilizando el nombre del proyecto
add_executable(${EXECUTABLE_NAME}${EXECUTABLE_EXTENSION} ${SOURCE_FILES}) add_executable(${PROJECT_NAME} ${SOURCE_FILES})
# Especificar la ubicación del ejecutable (en la raíz del proyecto) # Especificar la ubicación del ejecutable (en la raíz del proyecto)
set_target_properties(${EXECUTABLE_NAME}${EXECUTABLE_EXTENSION} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}) set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR})
# Enlazar las bibliotecas necesarias # Enlazar las bibliotecas necesarias
target_link_libraries(${EXECUTABLE_NAME}${EXECUTABLE_EXTENSION} ${LINK_LIBS}) target_link_libraries(${PROJECT_NAME} ${LINK_LIBS})

View File

@@ -1,13 +1,13 @@
# Variables comunes # Variables comunes
source := source/*.cpp SOURCE := source/*.cpp
executable_name := demo4_sprites EXECUTABLE_NAME := demo4_sprites
CXXFLAGS := -std=c++20 -Wall -Os # Opciones comunes de compilación CXXFLAGS := -std=c++20 -Wall -Os -ffunction-sections -fdata-sections # Opciones comunes de compilación
LDFLAGS := -lSDL2 # Flags de enlace comunes LDFLAGS := -lSDL3 # Flags de enlace comunes
OUTPUT_EXT := OUTPUT_EXT :=
# Detectar plataforma y configurar # Detectar plataforma y configurar
ifeq ($(OS),Windows_NT) ifeq ($(OS),Windows_NT)
LDFLAGS += -lmingw32 -lws2_32 -lSDL2main LDFLAGS += -lmingw32 -lws2_32
OUTPUT_EXT := .exe OUTPUT_EXT := .exe
else else
OUTPUT_EXT := .out OUTPUT_EXT := .out
@@ -15,8 +15,8 @@ endif
# Regla principal: compilar el ejecutable # Regla principal: compilar el ejecutable
all: all:
$(CXX) $(source) $(CXXFLAGS) $(LDFLAGS) -o $(executable_name)$(OUTPUT_EXT) $(CXX) $(SOURCE) $(CXXFLAGS) $(LDFLAGS) -o $(EXECUTABLE_NAME)$(OUTPUT_EXT)
# Regla para limpiar archivos generados # Regla para limpiar archivos generados
clean: clean:
rm -f $(executable_name)$(OUTPUT_EXT) rm -f $(EXECUTABLE_NAME)$(OUTPUT_EXT)