🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.os.linux.programowanie
3 messages
3 total messages Started by Michał Kuratczyk Wed, 13 Oct 1999 23:34
Przekazywanie zmiennych z Makefile'a do programu
#994
Author: Michał Kuratczyk
Date: Wed, 13 Oct 1999 23:34
8 lines
1189 bytes
Jak można ustawioną w Makefile'u zmienną przekazać do programu w C?
Konkretnie chodzi mi o to, że chcę w nim zdefiniować numer wersji
programu, a w programie mieć zmienną o tej wartości.

-- 
Michał 'kura' Kuratczyk <kura@pld.org.pl>
GC{S,M} d- s+:+ a18 C+++ UL++ P L+++ E---
W N++ w-- O- PGP t-- X+ b- DI+ G e- h* y?
Re: Przekazywanie zmiennych z Makefile'a do programu
#995
Author: Arkadiusz Nagórka
Date: Thu, 14 Oct 1999 07:23
25 lines
1348 bytes
kura@pld.org.pl (Michał Kuratczyk) wrote:
>Jak można ustawioną w Makefile'u zmienną przekazać do programu w C?
>Konkretnie chodzi mi o to, że chcę w nim zdefiniować numer wersji
>programu, a w programie mieć zmienną o tej wartości.

W Makefile

VER = 1.1.1.1

i w regule dla pliku C

plik.o: plik.c
	$(CC) $(CFLAGS) -DVER_NUM=$(VER) -I$(HEADER) -c $< plik.c

Teraz w plik.c można badać,czy symbol VER_NUM jest zdefiniowany

#ifdef VER_NUM
/* zrób coś */
#endif

-- 
Arkadiusz Nagórka                     nagorka@imipkm.pcz.czest.pl     

Politechnika Czestochowska            
Instytut Mechaniki i Podstaw Konstrukcji Maszyn
Re: Przekazywanie zmiennych z Makefile'a do programu
#996
Author: Marcin Kasperski
Date: Thu, 14 Oct 1999 11:25
39 lines
2436 bytes
Micha³ Kuratczyk wrote:
> 
> Jak mo¿na ustawion± w Makefile'u zmienn± przekazaæ do programu w C?
> Konkretnie chodzi mi o to, ¿e chcê w nim zdefiniowaæ numer wersji
> programu, a w programie mieæ zmienn± o tej warto¶ci.
> 

VERSION=1.1

%.o : %.c
	cc -c -o $@ $^ -DVERSION=$(VERSION)

i masz VERSION zdefiniowane jako makro.

Jest jeszcze zupe³nie inna mo¿liwo¶æ (sam co¶ takiego robiê). Je¶li
trzymasz ¼ród³a w RCS/CVS/inny narzêd¼ do kontroli wersji, mo¿esz
wyci±gaæ do programu "s³ówka". Ja robiê co¶ takiego:
- u¿ywam CVS
- wersje "dystrybuowane" tagujê robi±c co¶ w stylu
	cvs tag myprog_1-0-0
- kompilacje "release" robiê nie w katalogu roboczym, tylko wyci±gaj±c
kod "po tagu" (w ten sposób wiem na pewno "co budowa³em"), czyli robi±c
gdzie¶ na boku 
	cvs co -r myprog_1-0-0 progs/myprog
i kompiluj±c tam¿e
- w programie mam gdzie¶ $Name$ co CVS uprzejmie zamienia mi na $Name:
myprog_1-0-0$ (wstawiaj±c nazwê tagu po którym wyci±ga³em) - parsujê
sobie ten napis i mam wersjê programu

Troszkê to wszystko skomplikowane ale mam w ten sposób absolutn±
pewno¶æ, ¿e wersja programu któr± on raportuje jest zgodna z wersj±
któr± sobie oznaczy³em w repozytorium.
	

-- Marcin.Kasperski<at>softax.com.pl, Marcin.Kasperski<at>bigfoot.com
-- Moje pogl±dy s± moimi pogl±dami, nikogo poza mn± nie reprezentuj±.
-- ------------------------------------------------------------------
-- Osoba jest omegalizacj± ewolucji uniwersalnej na okre¶lonym 
-- odcinku etapowym  (Teilhard de Chardin)
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads