Pokud chcete tento soubor za běhu, doporučil bych vám ho vytvořit za běhu. Makefile se bere v úvahu pouze během kompilace. To je zjevně problém, pokud je program zkompilován a následně spouštěn různými uživateli, z nichž někteří v době kompilace ani nemusí existovat.
Během běhu můžete získat domovský adresář, jak je znázorněno zde (pokud používáte C/C++). Poté můžete zkontrolovat existenci složky/souboru s nejvyšším skóre a v případě potřeby jej vytvořit. Pokud chcete soubor s nejvyšším skóre pro všechny uživatele, měli byste ho umístit do domovského adresáře speciálního uživatele, ale raději někam jinam do systému souborů. To dělá například hra xjump.
A pokud jde o váš soubor Makefile, proměnná $USER je přeložena do kořenového adresáře kvůli sudo příkaz na
sudo make install
Uživatel, který ve skutečnosti používá make, je superuživatel:root.
Chcete nainstalovat svůj program pro všechny uživatele? Je tedy lepší, když si vytvoříte /home/user/.název_hry adresář, když uživatel spustí hru, ne když ji nainstaluje root. Jinak pouze uživatel, který volá sudo make install
bude mít svůj seznam nejlepších skóre. Pokud máte pouze jednoho uživatele, neinstalujte jej v rámci celého systému, ale do uživatelského adresáře.
Navrhuji inicializovat soubory uživatelů při prvním spuštění hry. Takže každý uživatel, dokonce i uživatelé, kteří v době instalace hry neexistovali, mohou mít svůj seznam nejlepších. Můžete přidat inicializační kód do své hry (c++, java nebo cokoliv jiného) nebo jen zavolat externí skript, který to udělá (není tak elegantní). Vyhněte se vytváření souborů souvisejících s uživatelem během instalace.