diff --git a/.gitignore b/.gitignore index 13e41e9..d768b7b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,107 @@ -*.exe +demo4_sprites +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 -build/ \ No newline at end of file +*.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* + diff --git a/CMakeLists.txt b/CMakeLists.txt index ba80ab7..75d7f65 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 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 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.") endif() -# Nombre del ejecutable -set(EXECUTABLE_NAME demo4_sprites) - # Detectar la plataforma y configuraciones específicas if(WIN32) set(PLATFORM windows) set(LINK_LIBS ${SDL3_LIBRARIES} mingw32 ws2_32) - set(EXECUTABLE_EXTENSION ".exe") elseif(UNIX AND NOT APPLE) set(PLATFORM linux) set(LINK_LIBS ${SDL3_LIBRARIES}) - set(EXECUTABLE_EXTENSION ".out") elseif(APPLE) set(PLATFORM macos) set(LINK_LIBS ${SDL3_LIBRARIES}) - set(EXECUTABLE_EXTENSION ".out") endif() # Incluir directorios de SDL3 include_directories(${SDL3_INCLUDE_DIRS}) -# Añadir el ejecutable -add_executable(${EXECUTABLE_NAME}${EXECUTABLE_EXTENSION} ${SOURCE_FILES}) +# Añadir el ejecutable reutilizando el nombre del proyecto +add_executable(${PROJECT_NAME} ${SOURCE_FILES}) # 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 -target_link_libraries(${EXECUTABLE_NAME}${EXECUTABLE_EXTENSION} ${LINK_LIBS}) +target_link_libraries(${PROJECT_NAME} ${LINK_LIBS}) diff --git a/Makefile b/Makefile index 02aa2d2..a18f761 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,13 @@ # Variables comunes -source := source/*.cpp -executable_name := demo4_sprites -CXXFLAGS := -std=c++20 -Wall -Os # Opciones comunes de compilación -LDFLAGS := -lSDL2 # Flags de enlace comunes -OUTPUT_EXT := +SOURCE := source/*.cpp +EXECUTABLE_NAME := demo4_sprites +CXXFLAGS := -std=c++20 -Wall -Os -ffunction-sections -fdata-sections # Opciones comunes de compilación +LDFLAGS := -lSDL3 # Flags de enlace comunes +OUTPUT_EXT := # Detectar plataforma y configurar ifeq ($(OS),Windows_NT) - LDFLAGS += -lmingw32 -lws2_32 -lSDL2main + LDFLAGS += -lmingw32 -lws2_32 OUTPUT_EXT := .exe else OUTPUT_EXT := .out @@ -15,8 +15,8 @@ endif # Regla principal: compilar el ejecutable all: - $(CXX) $(source) $(CXXFLAGS) $(LDFLAGS) -o $(executable_name)$(OUTPUT_EXT) + $(CXX) $(SOURCE) $(CXXFLAGS) $(LDFLAGS) -o $(EXECUTABLE_NAME)$(OUTPUT_EXT) # Regla para limpiar archivos generados clean: - rm -f $(executable_name)$(OUTPUT_EXT) \ No newline at end of file + rm -f $(EXECUTABLE_NAME)$(OUTPUT_EXT) \ No newline at end of file