Sida 1 av 2

Kan man få GCC att göra så här:

Postat: 3 september 2018, 07:50:23
av TomasL
Microchip använder gcc till PIC32.
Jag vill, efter kompilering och länkning automatiskt kopiera hex-filen till en annan folder på datorn.
Jag vill samtidigt att den får ett namn som motsvarar projektet och versionsnummer, versionsnummret finns i en h-fil i projektet, ligger som en konstant.
Alternativt får man tillverka ett litet program som gör detta, som startas av GCC med platsen för hex-filen som argument.

Kod: Markera allt

char *SVNRevNo			= "696";
char *SVNRevDate		= "2017 05 19";
char *SVNRevTime		= "16 18 49";

Re: Kan man få GCC att göra så här:

Postat: 3 september 2018, 09:34:26
av AndLi
Är inte make filen rätt ställe att göra det?

SVNRevNo låter som ett versionshanteringsystem nummer? Borde man inte automatiskt hämta de numrena med så man inte glömmer uppdatera?

(Jag skulle nog satt en parameter i makefilen till rätt SVN version, sen skickat med den till gcc commandline som en define (-D), som används för att initiera din SVNrevNo och sen gjort kopieringen med samma parameter i makefilen)

Re: Kan man få GCC att göra så här:

Postat: 3 september 2018, 09:40:05
av TomasL
filen svnrev.h som jag postade uppdateras varje gång man gör en commit eller en update.

Re: Kan man få GCC att göra så här:

Postat: 4 september 2018, 21:56:34
av lillahuset
Du ska väl inte be GCC göra det där.
Antingen om du anropar ett script från make eller från den utvecklingsmiljö du använder.
Eclipse-baserade miljöer jag har testat brukar ha möjlighet att göra saker först och sist i en byggprocess. Praktiskt.

Re: Kan man få GCC att göra så här:

Postat: 7 september 2018, 22:52:58
av gkar
För att verkligen veta vad din version är i binären, inte vad du önskar att den är, skulle jag titta i de kompilerade filerna och extrahera ut strängarna du söker.
Kolla objdump och dess kompisar. De kan lista det du behöver.

Re: Kan man få GCC att göra så här:

Postat: 7 september 2018, 22:56:42
av TomasL
Nja, SVN fixar detta per automatik, och skriver högsta versionsnumret till rev-filen.

Re: Kan man få GCC att göra så här:

Postat: 7 september 2018, 23:19:34
av AndLi
Men sen gäller det ju att din makefil är rätt och att rätt c filer byggs om som är beroende av din versions h fil...
Men jag gissar att du gör någon GUI baserad miljö med automatiserad generering av makefiler, då är det väl bara att hålla tummarna att den gör rätt...

Re: Kan man få GCC att göra så här:

Postat: 7 september 2018, 23:21:55
av TomasL
MPLAB, gamla versionen, och ja den verkar fixa det.

Re: Kan man få GCC att göra så här:

Postat: 8 september 2018, 12:04:49
av gkar
Jag missförstod vad du ville göra.
Jag trodde att det var åt andra hållet...

Re: Kan man få GCC att göra så här:

Postat: 9 september 2018, 10:34:31
av Polyene
Det låter som att detta bör göras med ett externt program eller skript. I ren windowsmiljö är det nog lite svårt, men med t. ex. Cygwin så borde det gå att göra ett shellscript som med lite grep och annat löser detta. Sen anropar du detta som ett post-build-steg ifrån MPLAB.

Re: Kan man få GCC att göra så här:

Postat: 15 september 2018, 10:41:57
av maDa
I princip samtliga utvecklingsmijöer/versionshanteringssystem har väll post-hooks, det ska väll inte behöva göras av kompilatorn.

Re: Kan man få GCC att göra så här:

Postat: 15 september 2018, 10:52:56
av TomasL
Förvisso, men de är globala, och går inte att styra mot specifika projekt, tyvärr.

Re: Kan man få GCC att göra så här:

Postat: 15 september 2018, 13:32:12
av baron3d
I MPLAB, (ikon: grönt med ett gult kugghjul) "Build Options" ->"Custom Build", går det att skriva in valfri kommandorad.

Re: Kan man få GCC att göra så här:

Postat: 15 september 2018, 13:47:03
av TomasL
Nej det går det inte, enbart "kompilatordirektiv" men det kanske finns kompilatorfunktioner för att starta externa händelser.

Re: Kan man få GCC att göra så här:

Postat: 15 september 2018, 14:28:35
av baron3d
Går du in där jag beskrev står det:
Kryss ruta: "Post-Build Step"
sedan:
"Enter a command line to be executed after the successful completion of a build"

"command line" borde referera till en valfri kommando rad.