fix(input): mou gamecontrollerdb.txt a l'arrel i el copia al build/ via CMake
This commit is contained in:
1 parent
c77f90f6b6
commit
91614fc545
4 files changed
+38
-11
No files matched your search
@@ -203,6 +203,26 @@ add_custom_command(
|
||||
add_custom_target(resource_pack ALL DEPENDS ${RESOURCE_PACK})
|
||||
add_dependencies(${PROJECT_NAME} resource_pack)
|
||||
|
||||
# --- CÒPIA DE gamecontrollerdb.txt AL COSTAT DEL BINARI ---
|
||||
# SDL_AddGamepadMappingsFromFile només llegeix del filesystem real (no del
|
||||
# pack), així que el fitxer ha de viure al directori del binari. Es copia
|
||||
# només si existeix per no fallar la build d'algú que encara no ha fet
|
||||
# `make controllerdb`.
|
||||
if(EXISTS "${CMAKE_SOURCE_DIR}/gamecontrollerdb.txt")
|
||||
set(CONTROLLER_DB "${CMAKE_BINARY_DIR}/gamecontrollerdb.txt")
|
||||
add_custom_command(
|
||||
OUTPUT ${CONTROLLER_DB}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
"${CMAKE_SOURCE_DIR}/gamecontrollerdb.txt"
|
||||
"${CONTROLLER_DB}"
|
||||
DEPENDS "${CMAKE_SOURCE_DIR}/gamecontrollerdb.txt"
|
||||
COMMENT "Copiant gamecontrollerdb.txt → build/"
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_target(controller_db ALL DEPENDS ${CONTROLLER_DB})
|
||||
add_dependencies(${PROJECT_NAME} controller_db)
|
||||
endif()
|
||||
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic)
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||
$<$<CONFIG:Debug>:_DEBUG>
|
||||
|
||||
@@ -62,12 +62,13 @@ pack:
|
||||
@./$(BUILDDIR)/pack_resources data $(BUILDDIR)/resources.pack
|
||||
|
||||
# Descàrrega de la base de dades de mappings de mandos. SDL només pot
|
||||
# obrir-la des del filesystem (no del pack), per això viu a data/input/.
|
||||
# obrir-la des del filesystem (no del pack), per això viu a l'arrel del
|
||||
# projecte i CMake la copia al costat del binari a cada build.
|
||||
controllerdb:
|
||||
@echo "Descarregant gamecontrollerdb.txt..."
|
||||
@curl -fsSL https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/master/gamecontrollerdb.txt \
|
||||
-o data/input/gamecontrollerdb.txt
|
||||
@echo "data/input/gamecontrollerdb.txt actualitzat"
|
||||
-o gamecontrollerdb.txt
|
||||
@echo "gamecontrollerdb.txt actualitzat"
|
||||
|
||||
# ==============================================================================
|
||||
# CODE QUALITY (delegados a cmake)
|
||||
@@ -118,7 +119,7 @@ help:
|
||||
@echo ""
|
||||
@echo " Recursos:"
|
||||
@echo " make pack - Empaquetar data/ a $(BUILDDIR)/resources.pack (format AE26)"
|
||||
@echo " make controllerdb - Descarregar data/input/gamecontrollerdb.txt actualitzat"
|
||||
@echo " make controllerdb - Descarregar gamecontrollerdb.txt actualitzat (arrel)"
|
||||
@echo ""
|
||||
@echo " Qualitat de codi:"
|
||||
@echo " make format - Formatar codi amb clang-format"
|
||||
|
||||
File renamed without changes.
@@ -149,16 +149,22 @@ void GamepadManager::init() {
|
||||
<< SDL_GetError() << '\n';
|
||||
return;
|
||||
}
|
||||
// `gamecontrollerdb.txt` és opcional. Si no existeix, SDL retorna -1 i
|
||||
// continuem amb les definicions internes del sistema. Sempre informem
|
||||
// del resultat per facilitar el diagnòstic de mandos no reconeguts.
|
||||
static constexpr const char* DB_PATH = "data/input/gamecontrollerdb.txt";
|
||||
const int ADDED = SDL_AddGamepadMappingsFromFile(DB_PATH);
|
||||
// `gamecontrollerdb.txt` és opcional. Viu a l'arrel del projecte
|
||||
// (no a `data/`) perquè SDL_AddGamepadMappingsFromFile només sap
|
||||
// llegir del filesystem real, no del pack. CMake el copia al costat
|
||||
// del binari a cada build perquè SDL_GetBasePath el trobi tant en
|
||||
// dev com en release. Sempre informem del resultat per facilitar el
|
||||
// diagnòstic de mandos no reconeguts.
|
||||
std::string db_path = "gamecontrollerdb.txt";
|
||||
if (const char* base = SDL_GetBasePath()) {
|
||||
db_path = std::string(base) + "gamecontrollerdb.txt";
|
||||
}
|
||||
const int ADDED = SDL_AddGamepadMappingsFromFile(db_path.c_str());
|
||||
if (ADDED < 0) {
|
||||
std::cout << "GamepadManager: no s'ha pogut carregar " << DB_PATH
|
||||
std::cout << "GamepadManager: no s'ha pogut carregar " << db_path
|
||||
<< ": " << SDL_GetError() << '\n';
|
||||
} else {
|
||||
std::cout << "GamepadManager: " << ADDED << " mappings carregats de " << DB_PATH << '\n';
|
||||
std::cout << "GamepadManager: " << ADDED << " mappings carregats de " << db_path << '\n';
|
||||
}
|
||||
|
||||
int count = 0;
|
||||
|
||||
Reference in new issue
Block a user