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/ a> .. Mais c'est trop spécifique à la plate-forme. P>
6 Réponses :
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. P>
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. P>
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. P>
L'utilitaire xxd code> peut être utilisé pour créer un fichier source C, contenant vos blobs binaires sous forme de tableau (avec la ligne de commande code> -i code>). Vous pouvez compiler cela à un objet qui est lié à votre exécutable. P>
xxd code> doit être portable à la plupart des plates-formes. P>
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à. P>
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. P>
Ceci semble très prometteur: https://github.com/cyrilcode/embed-Resource p>
CULAKE Basé et indépendant de la plate-forme. P>
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 p>
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. P>
Il est utilisé comme ceci: p>
Compiler de ressources Exécuter P>
lien res_bundle.o à votre projet P> li>
Le compilateur de ressources a analyses $ rescompenser res_list.h -o res_bundle.o code> p> li>
Incorporation des ressources en exécutable à l'aide de GCC