Où stocker les ressources pour le programme C ++ sous Linux

Cette question dit que le meilleur endroit pour stocker les parameters dans Linux est dans ~ / .config / appname

Le programme que j’écris doit utiliser un fichier .dat de 99Mo pour reconnaître les repères faciaux, l’incorporer dans le fichier binary ne semble pas être une bonne idée.

Existe-t-il un emplacement par défaut pour stocker les ressources sur Linux? actuellement, il est juste dans le répertoire à côté de l’exécutable, mais cela nécessite que le programme soit exécuté avec le répertoire en cours étant le répertoire dans lequel il se trouve.

Quelle est la meilleure façon de gérer des ressources comme celle-ci sur Linux? (qui pourrait potentiellement être multi-plateforme avec au moins OSX)

Vous devriez regarder les normes de hiérarchie du système de fichiers . En fonction des données (cela va-t-il changer, est-ce constant sur toutes les installations, etc.), le chemin dans lequel il sera placé changera en fonction des normes.

En général:

  • / usr / lib / program: inclut les fichiers object, les bibliothèques et les binarys internes pour une application
  • / usr / share / program: pour tous les fichiers de données indépendants de l’architecture en lecture seule
  • / var / lib / program: contient des informations d’état relatives à une application ou au système

Celles-ci semblent être de très bons endroits pour commencer, et vous pouvez vérifier la documentation pour voir si votre application appartient à l’une de ces catégories.

Si le fichier est spécifique à l’utilisateur qui exécute l’application, il doit être dans un sous-répertoire de ~ / mais AFAIK n’est pas standard et le meilleur choix dépend beaucoup du type de fichier / de l’utilisation. Si l’utilisateur doit le voir via l’interface graphique, vous pouvez utiliser ~ / Desktop ou ~ / Downloads. Si c’est temporaire, vous pouvez utiliser ~ / tmp ou ~ / var / tmp.

Si ce n’est pas spécifique, vous devriez le placer dans un sous-répertoire de / var. Encore une fois, le sous-répertoire exact peut dépendre de son type et d’autres facteurs.