Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/03/2019, à 20:18

Antoine79

Installation données jeu avec CMake [résolu]

Bonjour,
Je développe des jeux avec le langage C++ et la SDL2. Pour créer l'exécutable, j'utilise Cmake. Actuellement, mes jeux sont sur une partition de disque dur qui n'est pas celle du système d'exploitation. Par exemple, j'ai fait un tetris qui contient les répertoires 'textures' , 'fonts' et 'data' . J'ai aussi des fichiers qui sont amenés à être modifiés pour mon jeu comme des fichiers de meilleurs scores. Ces derniers (grâce à une fonction de la SDL2 qui renvoie un répertoire où l'on peut stocker pour ses jeux des fichiers le tout de manière cross-platform, puisque cette fonction à des retours différents selon l'OS utilisé par le jeu) sont localisés dans /home/.local/share/The games of the warren/'nom du jeu'/.

J'aimerais créer un système d'installation des mes jeux grâce à CMake, notamment avec la fonction install(DIRECTORY <dir> ... DESTINATION <dir> [...] ) pour copier les répertoires 'textures' 'fonts' et 'data' , mais je ne sais pas où copier ces répertoires pour qu'ils soient utilisables par l'exécutable. J'ai bien fait quelques recherches sur Google, Qwant, qui m'ont appris que l'idéal dans mon cas, serait de mettre le binaire dans /usr/local/bin et les ressources dans /usr/local/share/ (idéalement , il faudrait dans " /usr/local/share/'nom du jeu' " des répertoires ayant le nom du jeu qui contiendraient les ressources des différents jeux : 'textures' 'fonts' 'data' 'sounds' ou 'music'. Mais comme je ne suis sur de rien je ne veux pas faire de bétise. Comment dois-je organiser mes fichiers dans l'arborescence d'Ubuntu ?
Merci de m'avoir lu...

Dernière modification par Antoine79 (Le 18/03/2019, à 19:07)

Hors ligne

#2 Le 18/03/2019, à 19:00

Antoine79

Re : Installation données jeu avec CMake [résolu]

Re,
Bon ben , je crois que j'ai trouvé la solution à mon problème...:)
Sous Linux, les programmes issus de sources compilées sur le poste même sont de manière standard installé dans le répertoire /usr/local/bin/ (j'ai vu sur un sujet de stackoverflow dont la question était similaire à la mienne un schéma détaillant tous les buts des différents répertoires sous les systèmes Unix-like). Puis en épluchant la documentation de CMake j'en suis arrivé à implémenter le code suivant pour mon fichier 'CMakeLists.txt' : (si jamais quelqu' un tombe sur ce topic il aura une réponse wink )

if(UNIX)
	#Cette ligne ci-dessous est essentielle pour disposer des chemins d'installation standards
	include(GNUInstallDirs) 
	install( DIRECTORY fonts icons licenses textures DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME} )
	install( TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
	set( DESKTOP_DEST_PATH "/usr/share/applications/" )
	set( DESKTOP_FILE "original-memory.desktop" )
	
	#Ci-dessous , je crée le fichier qui permettra d'avoir une icone pour lancer le binaire installé...
	# ...dans '${CMAKE_INSTALL_BINDIR}' soit '/usr/local/bin' si l'utilisateur de cmake choisit ce répertoire par défaut
	file(WRITE ${DESKTOP_FILE} "[Desktop Entry]\n")
	file(APPEND ${DESKTOP_FILE} "Version=1.0\n")
	file(APPEND ${DESKTOP_FILE} "Type=Application\n")
	file(APPEND ${DESKTOP_FILE} "Name=Original Memory\n")
	file(APPEND ${DESKTOP_FILE} "Comment=find all the pair cards\n")
	file(APPEND ${DESKTOP_FILE} "Icon=${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}/icons/memory.ico\n")
	file(APPEND ${DESKTOP_FILE} "Exec=${CMAKE_INSTALL_FULL_BINDIR}/${PROJECT_NAME}\n")
	file(APPEND ${DESKTOP_FILE} "Path=${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}\n")
	file(APPEND ${DESKTOP_FILE} "Actions=\n")
	file(APPEND ${DESKTOP_FILE} "Categories=Game;The games of the warren;")
	
	install( FILES ${DESKTOP_FILE} DESTINATION "${DESKTOP_DEST_PATH}" )
endif(UNIX) 

Voili, voilou... tongue

Hors ligne