Eh bien, si vous voulez ce fichier pendant l'exécution, je vous recommande de le créer pendant l'exécution. Le Makefile n'est pris en compte qu'au moment de la compilation. C'est évidemment un problème si le programme est compilé puis exécuté par différents utilisateurs, dont certains peuvent même ne pas exister au moment de la compilation.
Pendant l'exécution, vous pouvez obtenir le répertoire personnel comme indiqué ici (si vous utilisez C/C++). Ensuite, vous pouvez vérifier l'existence du dossier/fichier des meilleurs scores et le créer si vous en avez besoin. Si vous voulez un fichier de meilleurs scores pour tous les utilisateurs, vous devez le placer dans le répertoire personnel d'un utilisateur spécial, mais plutôt ailleurs dans le système de fichiers. C'est par exemple le cas du jeu xjump.
Et à propos de votre Makefile, la variable $USER est traduite en root à cause du sudo commande sur
sudo make install
L'utilisateur qui exécute réellement make est le superutilisateur :root.
Vous souhaitez installer votre programme pour tous les utilisateurs ? Il est donc préférable de créer le /home/user/.game_name répertoire lorsque l'utilisateur lance le jeu, pas lorsque root l'installe. Sinon, seul l'utilisateur qui appelle sudo make install
aura sa liste des meilleurs scores. Si vous n'avez qu'un seul utilisateur, ne l'installez pas à l'échelle du système, mais dans le répertoire des utilisateurs.
Je suggère d'initialiser les fichiers utilisateurs à la première manche du jeu. Ainsi, tous les utilisateurs, même les utilisateurs qui n'existaient pas lorsque le jeu a été installé, peuvent avoir leur liste des meilleurs scores. Vous pouvez ajouter le code d'initialisation dans votre jeu (c++, java ou autre) ou simplement appeler un script externe qui le fait (pas si élégant). Évitez de créer des fichiers liés à l'utilisateur au moment de l'installation.