IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Question pour un outil multi-plateformes [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut Question pour un outil multi-plateformes
    Bonjour à tous

    J'ai une question: je suis novice sur Lazarus, et on vient de me conseiller Lazarus pour un outil multi-plateforme que je veux développer.

    En parcourant rapidement la page du projet, je me demande si on peut générer des applis pour les différentes plateformes à partir d'une seule (c'est à dire si par exemple du projet Linux on peut générer un exécutable Windows), ou si il faut copier les projets d'une plateforme à l'autre pour les générer....


    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 174
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Le même projet sert à générer des exécutables pour toutes les plateformes. Si vous ouvrez le projet sous Linux et que vous le compilez, vous obtiendrez un exécutable Linux, etc.

    Si vous ouvrez le projet sous Linux et que vous voulez compiler pour Windows, c'est possible aussi, mais ça demande quelques efforts supplémentaires.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Le même projet sert à générer des exécutables pour toutes les plateformes. Si vous ouvrez le projet sous Linux et que vous le compilez, vous obtiendrez un exécutable Linux, etc.
    Oui mais ça veut dire faire les modifs dans tous les projets....


    Citation Envoyé par Roland Chastain Voir le message
    Si vous ouvrez le projet sous Linux et que vous voulez compiler pour Windows, c'est possible aussi, mais ça demande quelques efforts supplémentaires.
    C'est plus ça qui m'intéresserait, et avec MacOS aussi... Enfin toutes les plateformes possibles...

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 174
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Oui mais ça veut dire faire les modifs dans tous les projets....
    Euh, non, ça veut dire, au pire, copier le dernier état du projet d'une machine sur l'autre. Et encore, on peut même éviter cela en plaçant le projet sur une clé USB.

    Mais bon peut-être que vous avez des contraintes auxquelles je ne pense pas.

    Citation Envoyé par souviron34 Voir le message
    C'est plus ça qui m'intéresserait, et avec MacOS aussi... Enfin toutes les plateformes possibles...
    Vous trouverez des explications avec le mot-clé cross-compilation. Si je me souviens bien, c'est seulement un compilateur en plus à installer. Par contre je ne sais pas si ça marche pour MacOS.

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 325
    Par défaut
    bonjour
    Citation Envoyé par souviron34 Voir le message
    Enfin toutes les plateformes possibles...
    Alors non
    existe arm, intel, android et ... , 32..64bit

    Pour lazarus, va voir le site officiel on ne change rien dans le code source (mais notre code peut parfois gérer les différences "si windows...si linux...") mais on recompile simplement
    Pour faire une application graphique (sur certaines plate-forme), il y a lazarus, python, flutter mais aussi des solutions à base de javascript (electron par exemple)

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    Bonjour, Jean et les autres,

    Citation Envoyé par Roland Chastain Voir le message
    Vous trouverez des explications avec le mot-clé cross-compilation. Si je me souviens bien, c'est seulement un compilateur en plus à installer.
    Un jour j'ai jeté un coup d'œil à ça et l'ai trouvé bien compliqué à gérer.

    De mon point de vue de toujours newbie, je reviens deux secondes sur ma proposition dans l'autre fil de machines virtuelles car on dirait que tu n'as pas rebondi dessus -- peut-être ne connais-tu pas bien ce principe et ce "feeling" ?
    Pour moi ce n'est que du bonheur et comme une petite image vaut mieux qu'on long discours, je t'ai préparé ce montage de 1920x1200 (divisé au tiers) où l'on reconnaitra
    • dans le côté marron à gauche toute le host Debian 11.5 avec 16 Giga de mémoire, montrant un bout du Bureau avec dossiers et fichiers et faisant tourner sans aucun souci
    • en haut à gauche une machine virtuelle Windows XP SP2 32bits reconnaissable à son fond d'écran ciel bleu sur collines verdoyantes, qui sert uniquement pour ma messagerie,
    • recouverte en haut à droite par une MV Seven 64bits avec un fond d'écran noir et une fenêtre d'explorateur ouverte,
    • recouverte en bas à droite par une MV Debian 11.5 (+ ou - un clone du host) où l'on devine l'icône Lazarus avec son infobulle jaune,
    • et la dernière fenêtre en bas à gauche j'en parle + bas :

    Nom : écran.png
Affichages : 209
Taille : 116,6 Ko

    Et tout ça fonctionne allègrement et échange des fichiers grâce à un seul dossier partagé sur le host, commun à toutes les machines, host comme mv's, ce qui me permet de développer un seul programme sur le host avec les $IFDEF Cible dont je t'ai parlé ; les mv's le récupèrent ensuite (chacune son tour, hein, faut pas abuser, ) et ma foi, mises à part des microscopiques différences de rendu esthétique à régler (toujours avec ces $IFDEF Cible), tout fonctionne parfaitement bien.

    Par contre, on peut avoir des petits gags, quand on descend bas dans le matériel, que je ne m'explique pas, d'ailleurs : on voit en bas à gauche toute en marron très léger une fenêtre de terminal ouverte sur le host et dans la mv Debian à droite une autre fenêtre de terminal, ces deux terminaux exécutent la même commande $ lscpu et les résultats sont
    à gauche le host :
    Tailles des adresses: 43 bits physical, 48 bits virtual
    à droite la mv :
    Tailles des adresses: 48 bits physical, 48 bits virtual
    Ça peut déranger.

    Mais c'est compensé par le fait que tu peux faire (une fois tout bien réglé) du copier/coller d'une mv à l'autre et/ou de et vers le host, bref, à y perdre la tête et attention les sacs de nœuds, .
    Tous ceux qui ont goûté à ça le confirmeront, ça serait dommage de s'en priver.

    EDIT : oublié de préciser que chaque machine virtuelle a sa propre install de FPC/Lazarus, bien sûr. C'est la seule contrainte car, en cas de mise à jour, faut se taper toutes les machines concernées. Bah... /EDIT

    PS : ceux qui ont deux ou trois écrans seront au paradis,

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Euh, non, ça veut dire, au pire, copier le dernier état du projet d'une machine sur l'autre. Et encore, on peut même éviter cela en plaçant le projet sur une clé USB.
    Bonne idée




    Citation Envoyé par Roland Chastain Voir le message
    Vous trouverez des explications avec le mot-clé cross-compilation. Si je me souviens bien, c'est seulement un compilateur en plus à installer. Par contre je ne sais pas si ça marche pour MacOS.
    OK je vais regarder merci


    Merci à tous

    Je vais demander au client, mais je pense que je vais me tourner à faire un site , et utiliser les 2 liens indiqués plus haut pour faire les applis pour GoogleStore et AppleStore....

    Encore un grand merci à ce merveilleux forum et ses excellents participants

  8. #8
    Membre chevronné

    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 181
    Par défaut
    Bonjour,

    Citation Envoyé par Jipété Voir le message
    Et tout ça fonctionne allègrement et échange des fichiers grâce à un seul dossier partagé sur le host, commun à toutes les machines, host comme mv's, ce qui me permet de développer un seul programme sur le host avec les $IFDEF Cible dont je t'ai parlé ; les mv's le récupèrent ensuite (chacune son tour, hein, faut pas abuser, ) et ma foi, mises à part des microscopiques différences de rendu esthétique à régler (toujours avec ces $IFDEF Cible), tout fonctionne parfaitement bien.
    J'ai essayé (host Windows 10 et vm Linux Mint) et j'ai eu droit à une magnifique exception sigseg avec certains codes pourtant très simples. Je pense que le souci vient de la configuration du projet (le fichier .lps ?) qui peut changer avec le système cible. Par exemple le moteur graphique, le processeur, le manifest, etc. Qu'en penses tu ?

    EDIT: Naturellement, le code testé est portable et dans le cas contraire, comme toi, j'ai des $IFDEF Cible qui vont bien.

    bb84000

  9. #9
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    Citation Envoyé par bb84000 Voir le message
    Je pense que le souci vient de la configuration du projet (le fichier .lps ?) qui peut changer avec le système cible. Par exemple le moteur graphique, le processeur, le manifest, etc.
    En général chez moi, ces options ont la cible "Default", donc ça s'en débrouille tout seul.

    Sinon, il y a ça, aussi :
    Dans l'unité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    uses
      {$IFDEF LINUX}
      LCLIntf, LCLType,
      {$ENDIF}
      {$IFDEF MSWINDOWS}
      Windows,
      {$ENDIF}
      Classes, ...
    (et si on pouvait avoir ces blocs $IFDEF insérés d'office dans le squelette des unités quand on fait nouveau projet/nouvelle unité, ça nous ferait des vacances et des pertes de temps en moins quand on cherche pourquoi ça ne compile pas...)

    pour un appel à du code externe (.dll ou .so) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function MakeSine(handle: HSTREAM; buffer: Pointer; length: DWORD; user: Pointer): DWORD; 
      {$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
    dans le .lpr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    program sinusprj;
     
    {$mode objfpc}{$H+}
     
    uses
      {$IFDEF UNIX}
      cthreads,
      {$ENDIF}
      Interfaces, // this includes the LCL widgetset
      ...
    Et faut y aller en pas-à-pas pour trouver la ligne qui coince.

    Je retourne à mes sons,

  10. #10
    Membre chevronné

    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 181
    Par défaut
    Salut Jipété,

    En fait je fais très attention aux $ifdef clible nécessaires, parce que je souhaite être au max portable, C'est d'ailleurs pour cette raison que j'ai des mv Linux , W11, W7, XP, (et aussi W10 quand je fais des essais hasardeux et que j en veux pas polluer l'host!).

    Quand j'ai eu le problème avec le petit programme spectrum, c'était vraiment au chargement de la forme principale que ça coinçait. j'ai du recréer uniquement le projet et sa forme principale pour que ça marche sous Linux, toutes les autres unités ont été reprises telles quelles. Et le code de l'unité principale était bien identique ! Je referai des tests un de ces quatre pour voir quels fichiers sont différents d'un OS à l'autre.

    bb84000

  11. #11
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    Citation Envoyé par bb84000 Voir le message
    Quand j'ai eu le problème avec le petit programme spectrum, c'était vraiment au chargement de la forme principale que ça coinçait. j'ai du recréer uniquement le projet et sa forme principale pour que ça marche sous Linux, toutes les autres unités ont été reprises telles quelles.
    Oh moi, sous Lazarus plus rien ne m'étonne, lecture...

    Faut juste bien se cramponner aux branches : toujours pas compris pourquoi, en 2.2.4, des fois je veux déplacer un objet (TButton ou autre) posé sur la fiche et pas moyen ! Il n'y a rien qui le fige dans les propriétés et pourtant il ne bouge pas...
    La combine que j'ai trouvée : au clavier, changer un peu une de ses propriétés de positionnement/taille et ça le libère de ce verrou caché.

  12. #12
    Membre chevronné

    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 181
    Par défaut
    Bonjour,

    Citation Envoyé par Jipété Voir le message
    Oh moi, sous Lazarus plus rien ne m'étonne,
    D'un autre côté, c'est un logiciel libre et gratuit. Donc il faut bien accepter quelques désagréments qu'on finit par contourner.

    bb84000

  13. #13
    Membre émérite
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 458
    Par défaut
    Bonjour,

    Citation Envoyé par Jipété Voir le message
    toujours pas compris pourquoi, en 2.2.4, des fois je veux déplacer un objet (TButton ou autre) posé sur la fiche et pas moyen !
    En général quand ça m'arrive, c'est parce que des ancres ont été modifiés (par moi) pour l'objet en question (propriété anchors de l'objet avec 3 petits points...)

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. D, Java ou C# pour du Desktop multi-plateforme ?
    Par kedare dans le forum Langages de programmation
    Réponses: 12
    Dernier message: 22/07/2008, 22h48
  2. Utiliser DotNet pour faire du multi-plateforme, bonne idée ?
    Par kedare dans le forum Framework .NET
    Réponses: 3
    Dernier message: 11/02/2008, 17h55
  3. Que choisir pour du développement Multi Plateforme : Java ou C++/Qt ?
    Par kedare dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 10/07/2007, 20h05
  4. Quel lg et IDE pour dev 1 appli multi-plateformes?
    Par Langelot dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 03/02/2005, 23h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo