Page 1 sur 1

Compilation batch de plusieurs projets PureBasic

Publié : dim. 06/déc./2015 12:16
par cage
Bonjour a tous,
C'est mon premier post sur le forum et je remercie par avance ceux qui prendrons le temps de me lire.
Je voudrais savoir s'il est possible de compiler plusieurs projets a partir des fichiers *.pbp pour pouvoir conserver toutes les informations contenues dans ces fichiers telles que:
Version du fichier
Nom du produit
Version du produit
..., visibles par clique droit sur l’exécutable, Propriétés->Détails
J'ai 25 fichiers a compiler en 32-bit et 64-bit et cela devient fastidieux de le faire a la main.
J'ai un répertoire par projet qui contient un fichier projet32.pbp et projet64.pbp qui me permet de compiler en 32 et 64-bit
J'ai un script pb pour updater mes fichiers *.pbp en fonction de la version de PB et de la date de compilation.
Il me manque la possibilité de compiler l'ensemble de mes projets par un simple Batch
Je ne sais pas si la question a déjà été posée.
Merci a vous,
Gérard

Re: Compilation batch de plusieurs projets PureBasic

Publié : dim. 06/déc./2015 21:42
par comtois
La syntaxe en ligne de commande est la suivante :

PureBasic.exe /build "projet.pbp"

Je ne connais pas la syntaxe des fichiers bat ou cmd,site à étudier, ça pourra me servir.

Voir la doc pour plus d'options

Re: Compilation batch de plusieurs projets PureBasic

Publié : lun. 07/déc./2015 0:27
par cage
Merci pour la réponse.
Je n'avais pas réalisé que c'était aussi simple que cela. J'avais mal lu ou mal compris la doc.
Je viens de faire l'essai avec le bout de code suivant et cela fonctionne parfaitement.

Code : Tout sélectionner

EnableExplicit

OnErrorGoto(?ErrorHandler)

Global PUREBASIC$ = "c:\program files\purebasic\purebasic.exe"

Global foldr$, old$

Global project$ , pbpfile$

NewList folders.s()

If ExamineDirectory(0, ".", "*.*")
  While NextDirectoryEntry(0)
    If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
      foldr$ = DirectoryEntryName(0)
      If foldr$ <> old$
        Select Left(LCase(foldr$), 12)
          Case ".", "..", "icones"
          Default
            AddElement(folders())
            folders() = foldr$
        EndSelect
      EndIf
      old$ = foldr$
    EndIf
  Wend
  FinishDirectory(0)
EndIf

SortList(folders(), #PB_Sort_Ascending | #PB_Sort_NoCase)

ForEach folders()
  foldr$ = folders()
  If ExamineDirectory(0, ".\" + foldr$, "*.pbp")
    While NextDirectoryEntry(0)
      If DirectoryEntryType(0) = #PB_DirectoryEntry_File
        project$ = DirectoryEntryName(0)
        pbpfile$ = ".\" + foldr$ + "\" + project$
        Debug pbpfile$
        RunProgram(PUREBASIC$, "/build " + pbpfile$, #Null$, #PB_Program_Wait)
      EndIf
    Wend
  EndIf
Next

ErrorHandler:

End
Il me reste a l'améliorer pour intercepter les erreurs et les afficher.
Quand je parlais de batch, je ne pensais pas forcément a du bat mais plutôt a une tache automatisé qui une fois lancée se déroule seule.
Encore merci,
Gérard

[Edit Ar-S] Bonjour Gerard, pense à mettre tes codes dans les balises 'Code' adéquates ;) j'ai corrigé[/edit]

Re: Compilation batch de plusieurs projets PureBasic

Publié : lun. 07/déc./2015 14:35
par cage
Merci pour la correction.
Je vais faire attention, promis.
Voici l'équivalent en batch dos
Contenu du fichier compile++.cmd ou compile++.bat (aucune importance)

Code : Tout sélectionner

@echo off
:: Fichier compile++.cmd

setlocal enableextensions enabledelayedexpansion

dir /b /s *.pbp > compile++.txt

for /f "delims=" %%a in (compile++.txt) do (
set projet=%%a
echo !projet!
call "c:\program files\purebasic\purebasic.exe" /build !projet!
)

pause
exit
Gérard