[R] Questions sur la compilation

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
grandMOJ
Niveau 1
Niveau 1
Messages : 7
Enregistré le : dim. 29 janv. 2012 18:35
Status : Hors ligne

[R] Questions sur la compilation

#1

Message par grandMOJ »

Bonjour à tous,

Alors voilà, je vous explique ma situation. J'ai passé tout le weekend à apprendre l'AutoIt puis à coder un logiciel si bien que le voilà maintenant achevé à 90%. Cependant, avant de passer à la phase finale de la conception, à savoir la GUI, je dois effectuer un grand débogage ! Le fait est qu'avec un script de 10 000 lignes s'y retrouver n'est pas très aisé, d'autant plus que j'arrive à mettre le doigt sur des dysfonctionnements sans pour autant être en mesure de les corriger. Problématique.

D'où l'idée de répartir mes fonctions dans plusieurs sous-fichiers ! Seulement voilà, de cette évidence découlent de nouvelles interrogations, notamment sur la phase de compilation. J'explicite : lorsque l'on compile le fichier principal, l'ossature du programme, celui qui fait la jonction entre tous les sous-fichiers contenant les fonctions, ceux-ci sont-ils intégralement inclus dans l'application, dans le sens où peut-elle dès lors être lancée dans n'importe quel environnement et fonctionner "normalement", exactement comme si un seul et unique script de 10 000 lignes avait été compilé ?

Si ce n'est pas le cas, cela veut dire que seul ce qui est explicité dans le script "main.au3" est compilé, et donc que le (.exe) ne sera opérationnel que si les sous-fichiers sont présents dans les dossiers indiqués. Seulement moi, je désire un logiciel sous forme d'un seul et unique exécutable pour que sa circulation soit la plus aisée et la plus sûre possible. Dans ce cas-là, que devrai-je faire pour qu'AutoIt réponde à mes exigences ? Quelles options et autres instructions de compilation devrai-je spécifier ? Merci d'avance !

Dernière chose, je n'ai pas pu m'empêcher de remarquer la fonction FileInstall. Elle me semble excellente, seulement je ne suis pas sûr de l'avoir bien comprise. Selon mes interprétations, elle servirait à intégrer dans le (.exe) final des fichiers tiers. Cela voudrait donc dire que je pourrais intégrer à mon application un fichier (.js) et des images que j'invoque à répétition et les faire fonctionner à l'intérieur-même du logiciel ! Génial ! Or dans les attributs de la fonction, pourquoi demander deux chemins d'accès (source, dest) ? Si en effet elle effectuait ce que je viens de conjecturer alors seul "source" est justifié car par définition le fichier devrait finir à l'intérieur de l'exécutable ce qui de fait retire le caractère nécessaire d'une copie du fichier dans un nouveau répertoire ! Encore une fois je sollicite des explications, et je vous remercie d'avance pour celles-ci !
Modifié en dernier par grandMOJ le lun. 30 janv. 2012 19:08, modifié 1 fois.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Questions sur la compilation

#2

Message par TT22 »

grandMOJ a écrit :J'ai passé tout le weekend à apprendre l'AutoIt
Bravo, moi j'ai mis 1 à 2 mois avant de comprendre à peut près son fonctionnement :lol:
grandMOJ a écrit :seul ce qui est explicité dans le script "main.au3" est compilé, et donc que le (.exe) ne sera opérationnel que si les sous-fichiers sont présents dans les dossiers indiqués.
Attention, on n'est pas en C/C++ ou d'autres, seul le fichier indiqué est compilé, si tu veux "ajouter" d'autres fichiers au script lors de la compilation, utilise #include "TonFichier.au3"
grandMOJ a écrit :elle servirait à intégrer dans le (.exe) final des fichiers tiers.
C'est exactement ça, le paramètre Source indique ou se trouve le fichier à intégrer dans l'exécutable, et le paramètre Dest indique l'endroit ou sera copié le fichier lors du lancement du logiciel.

Voilà, j'espère que j'ai répondu à tes questions.
Cordialement,
TT22
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Questions sur la compilation

#3

Message par Tlem »

Bonsoir,
je vais me permettre de compléter les réponses de TT22, qui bien que très justes, peuvent ne pas paraitre complètes pour celui qui pose la question.

Tout d'abord, vous pouvez diviser votre script en autant de partie que nécessaire. Du moment ou au début de votre script maitre, vous indiquez par la commande #Include "Partie1.au3" que vous voulez inclure à la compilation le fichier désigné.
Cela aura pour effet de faire comme si l'intégralité du fichier était ajoutée à votre script. Comme généralement, cette déclaration est faites en début de script, vous devrez prendre garde aux déclarations de variables, car chaque variable à une portée qui lui est spécifiée.
Pour exemple, si vous spécifiez la variable $Var dans votre script principal, après avoir fait l'inclusion du fichier Partie1.au3, alors cette variable ne pourra être utilisée dans Partie1.au3.
Une variable qui devra être utilisée dans l'intégralité du script (y compris les includes), devra obligatoirement être déclarée dans le premier include ou avant les includes.

En ce qui concerne la commande FileInstall, celle-ci à besoin impérativement du chemin source de ce que vous voulez inclure, car le compilateur ne peut pas connaitre l'origine du fichier. Notez aussi que cette origine doit impérativement être une chaine et non une variable.
Et vous devez aussi spécifier la destination, car lorsque votre script est compilé, lors de l'exécution de cette commande, il fera l'extraction du fichier source vers la destination, ce qui vous permettra d'utiliser la ressource sans vous préoccuper d'autre chose puisque vous stipulez l'endroit ou vous voulez le copier. ;)

Voilà, j'espère avoir été un peut plus complet dans la réponse, bien que nous abordons là un niveau bien au dessus du simple débutant.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
grandMOJ
Niveau 1
Niveau 1
Messages : 7
Enregistré le : dim. 29 janv. 2012 18:35
Status : Hors ligne

Re: [..] Questions sur la compilation

#4

Message par grandMOJ »

TT22 a écrit :
grandMOJ a écrit :seul ce qui est explicité dans le script "main.au3" est compilé, et donc que le (.exe) ne sera opérationnel que si les sous-fichiers sont présents dans les dossiers indiqués.
Attention, on n'est pas en C/C++ ou d'autres, seul le fichier indiqué est compilé, si tu veux "ajouter" d'autres fichiers au script lors de la compilation, utilise #include "TonFichier.au3"
Eh bien justement, puisque je dis faire appel à des fonctions externes, j'utilise forcément des #include, ce qui au final signifie que je n'ai pas de soucis à me faire et que tout fonctionnera comme je le voudrais.
TT22 a écrit :
grandMOJ a écrit :elle servirait à intégrer dans le (.exe) final des fichiers tiers.
C'est exactement ça, le paramètre Source indique ou se trouve le fichier à intégrer dans l'exécutable, et le paramètre Dest indique l'endroit ou sera copié le fichier lors du lancement du logiciel.
Ah d'accord, je viens de comprendre le mécanisme interne de la fonction : je pensais que le fichier-même était inclus dans le programme alors qu'en réalité seules les instructions de sa création le sont, et celles-ci sont lues lors de l'exécution.

Quoi qu'il en soit merci, tu m'as été d'un grand secours !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Questions sur la compilation

#5

Message par Tlem »

grandMOJ a écrit :je pensais que le fichier-même était inclus dans le programme
C'est tout à fait cela. :mrgreen:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Questions sur la compilation

#6

Message par TT22 »

grandMOJ a écrit :Quoi qu'il en soit merci, tu m'as été d'un grand secours !
Mais de rien, mais lis aussi le message de Tlem qui t’apportera plus d'informations.
Et pense à mettre un [R] comme balise :wink:
Cordialement,
TT22
grandMOJ
Niveau 1
Niveau 1
Messages : 7
Enregistré le : dim. 29 janv. 2012 18:35
Status : Hors ligne

Re: [..] Questions sur la compilation

#7

Message par grandMOJ »

Tlem a écrit :Pour exemple, si vous spécifiez la variable $Var dans votre script principal, après avoir fait l'inclusion du fichier Partie1.au3, alors cette variable ne pourra être utilisée dans Partie1.au3.
Merci pour cette information, si je ne l'avais pas eue j'aurais sans doute tourné en rond pendant un bon bout de temps. Vous m'avez fait gagner un temps précieux !
grandMOJ
Niveau 1
Niveau 1
Messages : 7
Enregistré le : dim. 29 janv. 2012 18:35
Status : Hors ligne

Re: [R] Questions sur la compilation

#8

Message par grandMOJ »

Je vous remercie tous les deux pour votre aide !

- Résolu
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Questions sur la compilation

#9

Message par silvere »

Il faut que tu édite le titre de ton premier message en [R] Questions sur la compilation
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Répondre