Linux GCC Builddate per Makfile

#2980251
Lesenswert?

Guten Morgen..

in meinem Programm habe ich folgende def:
1
extern char    __BUILD_DATE;
2

3
int main()
4
{
5
  printf("Build date: %u\n",(unsigned long) &__BUILD_DATE);
6
}

Wie muss das makefile aussehen damit das aktuelle Builddatum 
drinnensteht?

makefile:
1
CC_LINUX = gcc
2
WARN = -Wall
3
CFLAGS = std=gnu99
4

5
TARGET_LINUX = test
6
SRC = test.c
7

8
linux:
9
  $(CC_LINUX) $(SRC) -o $(TARGET_LINUX) $(CFLAGS)

Vielen Dank,
Markus
Gast #2980267
Lesenswert?

Markus C. schrieb:
> Wie muss das makefile aussehen damit das aktuelle Builddatum
> drinnensteht?

Nunja, bei dem obigen Code wäre das schwierig, denn du müßtest eine 
Variable anlegen, deren Adresse dem Builddatum entspricht. ;-)

Markus C. schrieb:
> extern char    __BUILD_DATE;

Hier hast du eine Variable, die genau ein einzelnes Byte aufnehmen kann.

> int main()
> {
>   printf("Build date: %u\n",(unsigned long) &__BUILD_DATE);

Hier gibst du die Adresse dieser Variablen aus.

> }
#2980526
Lesenswert?

Mach statt einer Variable ein Define, das kann man auch über die 
Kommandozeile erzeugen.
1
CFLAGS = -std=gnu99 -D __BUILD_DATE='"$(shell date)"'

Dann im printf entweder auf %s ändern um den String einzufügen oder den 
String gleich kombinieren. Allerdings wird date das aktuelle Datum ohne 
weitere Optionen in der aktuell eingestellten Sprache ausgeben.
#2980544
Lesenswert?

Hallo,

habe es jetzt so gemacht:
1
PROG_BUILD_NUM=.build_numer
2
BUILD_DATE = $(shell date +'%Y%m%d')
3
BUILD_NUM = $(shell cat $(PROG_BUILD_NUM))
4

5
CC_ARM = /usr/local/arm/fs-toolchain-4.4.3/bin/arm-linux-gcc
6
CC_ICNOVA = /home/markus/ICnova_clean/ICnova/build_arm/staging_dir/usr//bin/arm-linux-gcc
7
CC_LINUX = gcc
8
WARN = -Wall
9
CFLAGS = -std=gnu99
10

11
TARGET_LINUX  = programm_i686
12
TARGET_ARM    = programm_arm
13
TARGET_ICNOVA = programm_icnova
14

15
SRC = main.c
16

17
i686:  BUILD_INFO build_i686
18
arm:  BUILD_INFO build_arm
19
icnova:  BUILD_INFO build_icnova
20

21

22
BUILD_INFO:
23
  @echo Increment build number
24
  @if ! test -f $(PROG_BUILD_NUM) ; then echo 0 > $(PROG_BUILD_NUM); fi
25
  @echo $$(($$(cat $(PROG_BUILD_NUM)) + 1)) > $(PROG_BUILD_NUM)
26
  @echo "#define BUILD_NUM $(BUILD_NUM)\n#define BUILD_DATE" $(BUILD_DATE) > appVersion.h
27
  
28
build_i686:
29
  $(CC_LINUX) $(SRC) -o $(TARGET_LINUX) $(CFLAGS)
30
build_arm:
31
  $(CC_ARM) $(WARN) -o $(TARGET_ARM) $(SRC)
32
build_icnova:
33
  $(CC_ICNOVA) $(SRC) -o $(TARGET_ICNOVA) $(CFLAGS)

lg, markus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren