2010-10-29 23 views
2

J'ai fini de développer un ordinateur de bureau GUI application Ruby qui utilise Qt par la gemme qtbindings, et je dois le libérer avec quelques exigences:Emballage et distribution d'une application QtRuby en tant que joyau? Ou comment?

  1. L'utilisateur n'a pas à construire ou quoi que ce soit compiler, en particulier Qt bibliothèques, l'installation de Ruby et Rubygems est OK, mais pas plus
  2. Il doit fonctionner sur Mac et Windows, Linux trop préférence

J'ai essayé tar2rubyscript & rubyscript2exe mais j'échoué en raison de quelques erreurs énigmatiques, comme je ai décrit sur KDE-bindings mailing list

Un gars utile sur le canal #qtruby IRC a suggéré que je l'emballe comme une gemme et le libérer. J'ai essayé de faire cela mais mon problème est, comment puis-je lier qtbindings à une bibliothèque statique Qt? J'ai fait le gemspec, et j'ai utilisé bundler, mais il se construit contre les bibliothèques/en-têtes de développement Qt natives .. et mes utilisateurs n'auront pas cela.

Mes questions sont, encore une fois:

  1. Puis-je utiliser une pierre précieuse pour cela? Si oui, comment puis-je demander à l'utilisateur de construire des qtbindings avec une bibliothèque statique de Qt que je fournis?
  2. Connaissez-vous un autre moyen d'empaqueter une application qtruby? L'AS-tu fait?

Répondre

0

J'ai fait beaucoup de développement en Qt mais j'apprends encore Ruby et QtRuby donc, s'il vous plaît, prenez ceci avec un grain de sel.

Je ne prendrais pas la route des gemmes et j'essaierais de l'empaqueter comme l'application commerciale Qt sur laquelle je travaillais.

Un seul paquet incluant tout ce dont le programme a besoin pour fonctionner. Cela inclurait les bindings Qt4 Ruby et les librairies Qt et tout ce dont vous avez besoin pour l'exécuter mais pas sur [une installation Windows vanilla/une installation MacOS vanilla/La base standard Linux la plus communément supportée] avec l'exception possible de l'interpréteur Ruby en soi. Enveloppez votre application dans un script pour configurer LD_LIBRARY_PATH et d'autres types de variables d'environnement pour vous assurer que tout fonctionne avec les bibliothèques dynamiques que vous expédiez mais qui ne sont pas installées sur la cible Linux. Sous Windows, laissez-les (bibliothèques dynamiques) dans le dossier principal principal, même si vous pouvez également utiliser la route de script. Je ne me suis jamais déployé sur Mac, donc je ne sais pas, mais je peux l'imaginer similaire à Linux. Je sais que ce n'est pas élégant mais au moins cela fonctionne.

+0

Hmm c'est une suggestion intéressante, je vais l'essayer ce soir et je posterai mes progrès. J'ai une note cependant; Les bibliothèques dynamiques ne peuvent/ne doivent pas être empaquetées, c'est pourquoi elles sont dynamiques en premier lieu. Je vais construire une version statique de Qt et essayer avec ça. Bien que, comme vous l'avez dit, ce n'est pas très élégant. Je vous remercie. – amireh

+0

@amireh Ce ne sont pas les seules bibliothèques de motifs à partager: elles peuvent être partagées entre plusieurs instances de votre application. Je n'ai pas eu de bonnes expériences en utilisant des versions statiques de Qt quand elles étaient mélangées avec X11. X11 charge de toute façon certaines bibliothèques de manière dynamique (retardée) et si une structure change, votre application se bloque. Je recommande vraiment d'utiliser un Qt partagé, même en l'envoyant. Merci de poster vos expériences. Je vais faire la même chose (déployer une application QtRuby) dans le futur, donc je suis intéressé à vous aider. –

+0

Py: J'ai réussi à construire le paquet pour Linux.Je vais passer à Mac ensuite, puis Windows. Quand j'aurai fini, je partagerai une référence de mes progrès. – amireh