aaara si, makes, cmakes i gitignores com toca

This commit is contained in:
2025-03-24 12:16:19 +01:00
parent 501cfb35aa
commit 5ca8561e0a
4 changed files with 120 additions and 49 deletions

71
.gitignore vendored
View File

@@ -1,3 +1,4 @@
demo2_pixels_noise
build/ build/
# ---> C++ # ---> C++
@@ -34,3 +35,73 @@ build/
*.out *.out
*.app *.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

@@ -5,33 +5,45 @@ project(demo2_pixels_noise)
set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Definir las fuentes y el ejecutable # Opciones comunes de compilación
set(SOURCE demo2_pixels_noise.cpp) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Os -ffunction-sections -fdata-sections")
set(EXECUTABLE demo2_pixels_noise)
# Buscar SDL3 automáticamente # Buscar SDL3 automáticamente
find_package(SDL3 REQUIRED) find_package(SDL3 REQUIRED)
# Detectar la plataforma y ajustar configuraciones específicas # Si no se encuentra SDL3, generar un error
if(WIN32) if (NOT SDL3_FOUND)
set(PLATFORM windows) message(FATAL_ERROR "SDL3 no encontrado. Por favor, verifica su instalación.")
set(EXE_EXT ".exe")
set(EXTRA_LIBS mingw32 ws2_32)
elseif(UNIX AND NOT APPLE)
set(PLATFORM linux)
set(EXE_EXT ".out")
set(EXTRA_LIBS "")
elseif(APPLE)
set(PLATFORM macos)
set(EXE_EXT ".out")
set(EXTRA_LIBS "")
endif() endif()
# Añadir el ejecutable # Archivos fuente
add_executable(${EXECUTABLE}${EXE_EXT} ${SOURCE}) file(GLOB SOURCE_FILES source/*.cpp)
# Enlazar las bibliotecas específicas y SDL3 # Comprobar si se encontraron archivos fuente
target_link_libraries(${EXECUTABLE}${EXE_EXT} ${EXTRA_LIBS} SDL3::SDL3) if(NOT SOURCE_FILES)
message(FATAL_ERROR "No se encontraron archivos fuente en el directorio 'source/'. Verifica la ruta.")
endif()
# Colocar el ejecutable en la raíz del proyecto # Detectar la plataforma y configuraciones específicas
set_target_properties(${EXECUTABLE}${EXE_EXT} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}) if(WIN32)
set(PLATFORM windows)
set(LINK_LIBS ${SDL3_LIBRARIES} mingw32 ws2_32)
elseif(UNIX AND NOT APPLE)
set(PLATFORM linux)
set(LINK_LIBS ${SDL3_LIBRARIES})
elseif(APPLE)
set(PLATFORM macos)
set(LINK_LIBS ${SDL3_LIBRARIES})
endif()
# Incluir directorios de SDL3
include_directories(${SDL3_INCLUDE_DIRS})
# 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(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR})
# Enlazar las bibliotecas necesarias
target_link_libraries(${PROJECT_NAME} ${LINK_LIBS})

View File

@@ -1,34 +1,22 @@
# Makefile sin espacios adicionales y con sintaxis minimalista # Variables comunes
CXXFLAGS:=-std=c++20 -Wall -Os -ffunction-sections -fdata-sections SOURCE := source/*.cpp
LDFLAGS:=-lSDL3 EXECUTABLE_NAME := demo2_pixels_noise
SOURCE:=demo2_pixels_noise.cpp CXXFLAGS := -std=c++20 -Wall -Os -ffunction-sections -fdata-sections # Opciones comunes de compilación
EXECUTABLE:=demo2_pixels_noise LDFLAGS := -lSDL3 # Flags de enlace comunes
RM:=rm -f OUTPUT_EXT :=
# Detectar plataforma # Detectar plataforma y configurar
ifeq ($(OS),Windows_NT) ifeq ($(OS),Windows_NT)
PLATFORM:=windows LDFLAGS += -lmingw32 -lws2_32
LDFLAGS+=-lmingw32 -lws2_32 OUTPUT_EXT := .exe
EXE_EXT:=.exe
else else
UNAME_S:=$(shell uname -s) OUTPUT_EXT := .out
ifeq ($(UNAME_S),Linux)
PLATFORM:=linux
EXE_EXT:=.out
endif
ifeq ($(UNAME_S),Darwin)
PLATFORM:=macos
EXE_EXT:=.out
endif
endif endif
# Regla principal # Regla principal: compilar el ejecutable
all: $(EXECUTABLE) all:
$(CXX) $(SOURCE) $(CXXFLAGS) $(LDFLAGS) -o $(EXECUTABLE_NAME)$(OUTPUT_EXT)
# Compilar # Regla para limpiar archivos generados
$(EXECUTABLE):
$(CXX) $(SOURCE) $(CXXFLAGS) $(LDFLAGS) -o $(EXECUTABLE)$(EXE_EXT)
# Limpiar
clean: clean:
$(RM) $(EXECUTABLE)* rm -f $(EXECUTABLE_NAME)$(OUTPUT_EXT)