Bene, se vuoi quel file durante il runtime, ti consiglio di crearlo durante il runtime. Il Makefile viene considerato solo in fase di compilazione. Questo è ovviamente un problema se il programma viene compilato e poi eseguito da diversi utenti, alcuni dei quali potrebbero anche non esistere in fase di compilazione.
Durante il runtime puoi ottenere la home directory come mostrato qui (se stai usando C/C++). Quindi puoi verificare l'esistenza della cartella / file dei punteggi più alti e crearlo se necessario. Se vuoi un file dei punteggi migliori per tutti gli utenti, dovresti metterlo nella home directory di un utente speciale, ma piuttosto da qualche altra parte nel file system. Questo è fatto per esempio dal gioco xjump.
E riguardo al tuo Makefile, la variabile $USER viene tradotta in root a causa del sudo comando su
sudo make install
L'utente che esegue effettivamente make è il superutente:root.
Vuoi installare il tuo programma per tutti gli utenti? Quindi è meglio se crei /home/user/.game_name directory quando l'utente esegue il gioco, non quando root lo installa. Altrimenti, solo l'utente che chiama sudo make install
avrà la sua lista dei punteggi migliori. Se hai un solo utente, non installarlo a livello di sistema, ma nella directory degli utenti.
Suggerisco di inizializzare i file degli utenti alla prima esecuzione del gioco. Quindi ogni utente, anche gli utenti che non esistevano quando il gioco è stato installato, può avere il proprio elenco dei punteggi migliori. Puoi aggiungere il codice di inizializzazione nel tuo gioco (c++, java o qualsiasi altra cosa) o semplicemente chiamare uno script esterno che lo faccia (non così elegante). Evitare di creare file relativi all'utente al momento dell'installazione.