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 :

[Lazarus] Compiler un projet/application Lazarus uniquement avec Free Pascal [FAQ]


Sujet :

Lazarus Pascal

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 176
    Points
    176
    Par défaut [Lazarus] Compiler un projet/application Lazarus uniquement avec Free Pascal
    Bonjour,

    sur un Projet/Application (graphique) écrit avec Lazarus, il m'arrive de vouloir faire une correction dans un fichier .pas

    alors généralement j'ouvre mon fichier .pas via l'éditeur Lazarus et je relance la compile le link et je recréé l'exécutable. et tout cela est long...

    comme le chargement de Lazarus et la compile sur des petites configurations est peu rapide, je me demandais si on peut on se passer de l'environnement Lazarus pour refaire l'exécutable directement avec FPC

    si oui je suppose qu'il faut passer en paramètres les différents sources
    pas, lpi, lpr ?

    et je suppose que sous Linux c'est pareil non ?

    merci si quelqu'un a un exemple..
    Un bon exemple vaut mieux qu'une longue explication confuse...

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    638
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 638
    Points : 408
    Points
    408
    Par défaut
    Bonjour,

    Il suffit de faire :

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 176
    Points
    176
    Par défaut
    bonjour,

    merci

    oui cette commande est valable pour un simple .pas
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    program hello;
    begin
    	Writeln('Hello ');
    	readln;
    end.
    mais en l'occurence ce code appelle d'autre choses comme les LCL je crois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    unit Unit1; 
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end; 
     
    var
      Form1: TForm1; 
     
    implementation
     
    { TForm1 }
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage('hello2 !');
    end;
     
    initialization
      {$I unit1.lrs}
     
    end.
    voici mon message d'erreur quand je compile avec scite par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >C:\lazarus\fpc\2.2.0\bin\i386-win32\fpc -Sd -Xs "C:\lazarus\josef\test2\unit1.pas"
    Free Pascal Compiler version 2.2.0 [2007/11/14] for i386
    Copyright (c) 1993-2007 by Florian Klaempfl
    Target OS: Win32 for i386
    Compiling C:\lazarus\josef\test2\unit1.pas
    Fatal: Can't find unit LResources used by Unit1
    Fatal: Compilation aborted
    Error: C:\lazarus\fpc\2.2.0\bin\i386-win32\ppc386.exe returned an error exitcode (normal if you did not specify a source file to be compiled)
    >Exit code: 1
    je suppose que je dois passer à FPC en paramètre d'autres fichiers ...
    Un bon exemple vaut mieux qu'une longue explication confuse...

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    638
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 638
    Points : 408
    Points
    408
    Par défaut
    Effectivement ça ne marche pas.

    fpc a des options en ligne de commande. Il faut regarder ce qu'on peut faire avec -FD, -Fi et -Fl.

  5. #5
    Membre éclairé

    Inscrit en
    Avril 2003
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 284
    Points : 773
    Points
    773
    Par défaut
    bonjour JoseF,

    Je n'ai pas trouvé de réponse sur le net, je me suis donc penché sur le sujet.

    Voici la solution que j'ai trouvée pour windows :

    1) j'ai modifié le fichier fpc.cfg afin d'y ajouter une directive de compilation personnalisée que je nomme #FPCALONE, afin d'y passer les paramètres ad'hoc.

    2) je compile mon projet via un .bat qui appelle fpc avec le paramètre
    -dFPCALONE

    IL existe peut-etre des moyens plus simples, mais celui-ci fonctionne, ce qui n'est déjà pas si mal....

    Donc dans le détail voici la démarche :

    1) Ouvrir avec le bloc note le fichier fpc.cfg correspondant à sa version de Lazarus.
    pour moi c'est le fichier C:\lazarus\fpc\2.2.1\bin\i386-win32\fpc.cfg

    2) Ouvrir le projet concerné dans lazarus.
    pour cet exemple c'est c:\projets\fpccomp\project1.lpr
    Important !! Mettre son projet dans une répertoire conforme aux standards de path DOS ! sans caractères spéciaux et sans espaces !!!!

    3) Dans Lazarus faire projet >> options du compilateur, puis dans la fenetre aparaissant, appuyer sur le bouton situé en bas à gauche nommé : options de compilation. >> faire un copier (control+C) des paramètres aparaissant dans cette fenêtre
    pour moi c'est :
    -S2cgi -OG1 -gl -WG -vewnhi -l -Fu..\..\lazarus\lcl\units\i386-win32\ -Fu..\..\lazarus\lcl\units\i386-win32\win32\ -Fu..\..\lazarus\packager\units\i386-win32\ -Fu. -oproject1.exe -dLCL -dLCLwin32
    4) Copier ce texte à la fin du fichier fpc.cfg dans le bloc note, puis le modifier afin de ne plus utiliser des chemins relatifs, mais des chemins réels.
    Aller à la ligne après chaque paramètre.
    Ajouter au début la directive spécifique à notre compilation à la main #IFDEF FPCALONE et à la fin le #ENDIF

    Voici ce que donne la version nettoyée pour moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #IFDEF FPCALONE
     -S2cgi 
     -OG1 
     -gl 
     -WG 
     -vewnhi 
     -l 
     -Fuc:\lazarus\lcl\units\i386-win32\ 
     -Fuc:\lazarus\lcl\units\i386-win32\win32\ 
     -Fuc:\lazarus\packager\units\i386-win32\ 
     -Fu. 
     -oproject1.exe 
     -dLCL 
     -dLCLwin32
    #ENDIF
    5) Dans le répertoire du projet, créer un fichier compil.bat dans lequel il faut définir les paramètres de compilation.
    pour mon exemple ce sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off
     
    C:\lazarus\fpc\2.2.1\bin\i386-win32\fpc.exe -dFPCALONE c:\projets\fpccomp\project1.lpr
     
    pause
    6) Lancer le .bat en double cliquant dessus pour compiler le projet sans Lazarus.

    7) Penser à stripper eventuellement son exe si on compte le diffuser...



    Bonne continuation

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 176
    Points
    176
    Par défaut
    Bonjour Clandestino,

    voila j'ai suivi tes recommandations et ça fonctionne à merveille !
    dans le fpc.cfg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #IFDEF FPCALONE
    -S2cgi
    -OG1
    -gl
    -WG
    -vewnhi
    -l 
    -Fuc:\lazarus\lcl\units\i386-win32\ 
    -Fuc:\lazarus\lcl\units\i386-win32\win32\ 
    -Fuc:\lazarus\packager\units\i386-win32\ 
    -Fu. 
    -oproject1.exe 
    -dLCL 
    -dLCLwin32
    #ENDIF
    le unit1.pas que je peux modifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [...]
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage('hello2 ! modif');
    end;
    [...]
    le compil.bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
     
    C:\lazarus\fpc\2.2.0\bin\i386-win32\fpc.exe -dFPCALONE C:\lazarus\josef\test2\project1.lpr
     
    pause
     
    project1
    le resultat de la compil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    >compil.bat
    Warning: You are using the obsolete switch -OG
    Hint: End of reading config file C:\lazarus\fpc\2.2.0\bin\i386-win32\fpc.cfg
    Free Pascal Compiler version 2.2.0 [2007/11/14] for i386
    Copyright (c) 1993-2007 by Florian Klaempfl
    Target OS: Win32 for i386
    Compiling C:\lazarus\josef\test2\project1.lpr
    Compiling Unit1.pas
    Unit1.pas(16,28) Hint: Parameter "Sender" not used
    Linking C:\lazarus\josef\test2\project1.exe
    65 lines compiled, 6.7 sec, 866928 bytes code, 264824 bytes data
    1 warning(s) issued
    3 hint(s) issued
     
    Appuyez sur une touche pour continuer... 
    >Exit code: 0
    voila merci bien. je crois que je n'aurais jamais trouvé...

    ainsi je peux faire des modifs sans avoir à lancer Lazarus

    merci Clandestino !!
    Un bon exemple vaut mieux qu'une longue explication confuse...

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/05/2015, 17h23
  2. [Compilation] Compiler un projet utilisant Qt 5 avec CMake
    Par arnolddumas dans le forum Outils
    Réponses: 0
    Dernier message: 25/04/2013, 23h26
  3. Réponses: 0
    Dernier message: 24/11/2011, 11h10

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