diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e002b2..9751462 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,9 @@ endif() set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) +# Configuración global de flags de compilación +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Os -ffunction-sections -fdata-sections") + # Define el directorio de los archivos fuente set(DIR_SOURCES "${CMAKE_SOURCE_DIR}/source") @@ -26,18 +29,27 @@ endif() # Configuración de SDL2 find_package(SDL2 REQUIRED) -include_directories(${SDL2_INCLUDE_DIRS}) -link_directories(${SDL2_LIBDIR}) +if(SDL2_FOUND) + message(STATUS "SDL2 encontrado: ${SDL2_INCLUDE_DIRS}") + include_directories(${SDL2_INCLUDE_DIRS}) + link_directories(${SDL2_LIBDIR}) +else() + message(FATAL_ERROR "SDL2 no encontrado") +endif() + +# Incluye rutas de SDL2 obtenidas con pkg-config +include_directories(/usr/local/include /usr/local/include/SDL2) +link_directories(/usr/local/lib) # Definir las bibliotecas comunes -set(LIBS SDL2main SDL2) +set(LIBS SDL2) # Configuración común de salida de ejecutables en el directorio raíz set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}) # Objetivos específicos por plataforma if(WIN32) - set(LIBS ${LIBS} mingw32 opengl32 gdi32 winmm imm32 ole32 version) + set(LIBS ${LIBS} SDL2main mingw32 opengl32 gdi32 winmm imm32 ole32 version) # Windows estándar add_executable(${PROJECT_NAME}_windows ${SOURCES}) @@ -60,6 +72,9 @@ if(WIN32) elseif(APPLE) set(LIBS ${LIBS} "-framework OpenGL") + # Añadir la flag de compilación para desactivar advertencias de obsolescencia + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated") + # macOS estándar add_executable(${PROJECT_NAME}_macos ${SOURCES}) target_compile_definitions(${PROJECT_NAME}_macos PRIVATE MACOS_BUILD) diff --git a/Makefile b/Makefile index adb4715..014da08 100644 --- a/Makefile +++ b/Makefile @@ -50,84 +50,7 @@ else endif endif -OBJECTS := $(subst $(DIR_SOURCES), $(DIR_BUILD), $(SOURCES)) -OBJECTS := $(OBJECTS:.cpp=.o) -DEPENDENCIES:= $(OBJECTS:.o=.d) - - -############################################################################### -# # -# RULES # -# # -############################################################################### - -.PHONY: all a1 - -all: a1 - -a1: $(TARGET_FILE) - -$(TARGET_FILE): $(OBJECTS) - $(MKD) $(@D) - $(CXX) $(OBJECTS) $(LDFLAGS) -o $(TARGET_FILE) - -$(DIR_BUILD)%.o: $(DIR_SOURCES)%.cpp - $(MKD) $(@D) - $(CXX) -c $< $(CXXFLAGS) $(INCLUDES) -o $@ - --include $(DEPENDENCIES) - -############################################################################### -# # -# CLEAN # -# # -############################################################################### - -.PHONY: clean - -clean: - $(RM) $(call FixPath,$(DIR_BUILD)) - -############################################################################### -# # -# PRINT-VARIABLES # -# # -############################################################################### - -.PHONY: print-variables - -print-variables: - @echo MAKEFILE_LIST: $(MAKEFILE_LIST) - - @echo "DIR_ROOT :" $(DIR_ROOT) - @echo "DIR_SOURCES:" $(DIR_SOURCES) - @echo "DIR_BIN :" $(DIR_BIN) - @echo "DIR_BUILD :" $(DIR_BUILD) - - @echo "DIR_IMGUI :" $(DIR_IMGUI) - @echo "DIR_IMGUI_SFML:" $(DIR_IMGUI_SFML) - @echo "INCLUDES :" $(INCLUDES) - - @echo CXX: $(CXX) - @echo CXXFLAGS: $(CXXFLAGS) - @echo LDFLAGS: $(LDFLAGS) - - @echo SOURCES: $(SOURCES) - @echo OBJECTS: $(OBJECTS) - @echo DEPENDENCIES: $(DEPENDENCIES) - - @echo TARGET_NAME: $(TARGET_NAME) - @echo TARGET_FILE: $(TARGET_FILE) - - @echo RM: $(RM) - -raspi: - $(CXX) $(SOURCES) -D ARCADE -D VERBOSE $(CXXFLAGS) $(LDFLAGS) -o $(TARGET_FILE) - strip -s -R .comment -R .gnu.version $(TARGET_FILE) --strip-unneeded - -raspi_debug: - $(CXX) $(SOURCES) -D ARCADE -D VERBOSE -D DEBUG $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" - +# Rules windows: @echo off $(CXX) $(SOURCES) $(CXXFLAGS) $(LDFLAGS) -o "$(TARGET_FILE).exe" @@ -249,6 +172,13 @@ linux_release: # Elimina la carpeta temporal $(RM) "$(RELEASE_FOLDER)" +raspi: + $(CXX) $(SOURCES) -D ARCADE -D VERBOSE $(CXXFLAGS) $(LDFLAGS) -o $(TARGET_FILE) + strip -s -R .comment -R .gnu.version $(TARGET_FILE) --strip-unneeded + +raspi_debug: + $(CXX) $(SOURCES) -D ARCADE -D VERBOSE -D DEBUG $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" + anbernic: # Elimina carpetas previas $(RM) "$(RELEASE_FOLDER)"_anbernic @@ -259,6 +189,5 @@ anbernic: # Copia ficheros cp -R data "$(RELEASE_FOLDER)"_anbernic -# Complia - $(CXX) $(SOURCES) -D ANBERNIC -D NO_SHADERS -D ARCADE -D VERBOSE $(CXXFLAGS) $(LDFLAGS) -o $(RELEASE_FOLDER)_anbernic/$(TARGET_NAME) - $(CXX) $(SOURCES) -D ANBERNIC -D ARCADE -D VERBOSE $(CXXFLAGS) $(LDFLAGS) -o $(RELEASE_FOLDER)_anbernic/$(TARGET_NAME).shaders \ No newline at end of file +# Compila + $(CXX) $(SOURCES) -D ANBERNIC -D NO_SHADERS -D ARCADE -D VERBOSE $(CXXFLAGS) $(LDFLAGS) -o $(RELEASE_FOLDER)_anbernic/$(TARGET_NAME) \ No newline at end of file