8
votes

Gestion des ressources indépendantes de plate-forme

Je cherche un moyen d'intégrer des fichiers texte dans mes fichiers binaires (comme le système de ressources Windows). J'ai besoin de quelque chose qui est également indépendant de la plate-forme (fonctionne dans Windows et Linux). J'ai trouvé que la gestion des ressources QT soit ce dont j'ai besoin mais je ne suis pas désireux de mon application en fonction de QT pour cela seul. J'ai aussi trouvé cet outil à http://www.taniwha.com/~paul/res/ .. Mais c'est trop spécifique à la plate-forme.


6 Réponses :


1
votes

Si vous utilisez QT 4.5, vous pouvez vous assurer que le programme ne dépend que d'un petit morceau de QT, tel que libqtcore. QResource fait partie de libqtcore.


0 commentaires

0
votes

Ce n'est pas une si bonne idée. Sur Linux, par exemple, les données doivent être installées dans un sous-répertoire de "$ Datadir" qui est défini par défaut défini comme "$ préfixe / partage", où "$ préfixe" est le préfixe d'installation. Sur Mac OS X, les ressources doivent être installées dans $ AppBundle / Contenu / Ressources, où $ AppBundle est le nom du dossier se terminant par ".App". Sous Windows, l'installation de données dans un dossier qui est un frère de réalisation de l'exécutable n'est pas une pratique rare. Vous ferez peut-être mieux d'utiliser le CUMAKE Build System, et en utilisant son CPACK Fonctions d'emballage pour l'installation / regroupement de manière spécifique à la plate-forme préférée.

Bien que regrouper vos ressources dans l'exécutable, elle-même peut sembler cool, c'est en fait une idée dangereuse ... Par exemple, les données intégrées seront-elles allouées dans une page exécutable? Que se passera-t-il si vous essayez d'écraser ou de modifier les données? Et si vous souhaitez modifier ou modifier les données au moment de l'exécution? Choses à penser.


0 commentaires

4
votes

L'utilitaire xxd peut être utilisé pour créer un fichier source C, contenant vos blobs binaires sous forme de tableau (avec la ligne de commande -i ). Vous pouvez compiler cela à un objet qui est lié à votre exécutable.

xxd doit être portable à la plupart des plates-formes.


0 commentaires

1
votes

Vous pouvez simuler simuler toutes sortes de données à votre binaire normal. Fonctionne dans Windows et Linux. Vous devrez ouvrir votre propre binaire au moment de l'exécution et lire les données de là.

Cependant, je dois convenir que l'intégration des données dans les binaires est une idée étrange. Il est courant d'inclure de telles données que des fichiers distincts emballés avec l'application.


0 commentaires

0
votes

Ceci semble très prometteur: https://github.com/cyrilcode/embed-Resource

CULAKE Basé et indépendant de la plate-forme.


0 commentaires

0
votes

Comme je n'aime pas non plus l'idée de convertir des fichiers dans des tableaux C uniquement pour les avoir convertis vers des binaires, j'ai créé mon propre compilateur de ressources à l'aide de LLVM et de clang:

https://github.com/nohajc/resman

J'ai testé sur Windows, Linux et Macos, mais cela peut potentiellement être Exécutez sur n'importe quelle plate-forme prise en charge par LLVM.

Il est utilisé comme ceci:

  1. Créer un fichier d'en-tête, par ex. res_list.h xxx
    1. Compiler de ressources Exécuter

      $ rescompenser res_list.h -o res_bundle.o

    2. lien res_bundle.o à votre projet

    3. Utilisez les fichiers de ressources xxx

      Le compilateur de ressources a analyses res_list.h (à l'aide de clang) mais au lieu de générer des fichiers CPP, il va directement au fichier d'objet natif (ou Bibliothèque statique) Format (Utilisation de LLVM).


0 commentaires