🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

8 total messages Started by Karpierz Tue, 03 Feb 1998 07:48
Kopoty z makefile Borlanda
#1166
Author: Karpierz
Date: Tue, 03 Feb 1998 07:48
23 lines
1308 bytes
Witam

Mam prosbe do specow od make Borlanda o pomoc w klopotach
z makefile w BC++ 4.52.
W pliku makefile mam zdefiniowany symbol
VENDOR = Sun
i chce go przekazac do kompilowanego zbioru ale w popstaci
"Sun".
W tej chwili jest tak (wzorem z VC++)
bcc .. -DVENDOR=\"$(VENDOR)\"
ale to nie dziala, a w pliku dostaje stala VENDOR == Sun a nie "Sun"
Oczywiscie moge zdefiniowac makro:
#define VENDOR_STR  "\"##VENDOR##\""
ale problem polega na tym aby nie wprowadazc zmian w plikach 
zrodlowych.
Nie pomagaja kombinacje typu
VENDOR = "Sun"
bcc .. -DVENDOR=$(VENDOR)

-- 
Pozdrawiam                                         Adam Karpierz   
mailto:karpierz@intertele.pl
http://www.intertele.pl/users/karpierz 
Re: Kopoty z makefile Borlanda
#1167
Author: Pawel Piotrowski
Date: Tue, 03 Feb 1998 08:25
20 lines
1163 bytes
Karpierz wrote:

> Mam prosbe do specow od make Borlanda o pomoc w klopotach
> z makefile w BC++ 4.52.
> W pliku makefile mam zdefiniowany symbol
> VENDOR = Sun
> i chce go przekazac do kompilowanego zbioru ale w popstaci
> "Sun".
> W tej chwili jest tak (wzorem z VC++)
> bcc .. -DVENDOR=\"$(VENDOR)\"

Przed chwila sprawdzilem w make Borlanda vesrsja 3.7 i wersja 4.0,
dzialaja z czyms takim:

bcc .. -DVENDOR="$(VENDOR)"

Fakt, jest to zbyt oczywiste aby przyszlo do glowy jako pierwsze :)

Pozdrawiam
Pawel
Re: Kopoty z makefile Borlanda
#1168
Author: Karpierz
Date: Tue, 03 Feb 1998 12:26
47 lines
1923 bytes
Pawel Piotrowski <pietras@sopot.lex.pl> napisal
> Karpierz wrote:
[...] 
> > bcc .. -DVENDOR=\"$(VENDOR)\"
> 
> Przed chwila sprawdzilem w make Borlanda vesrsja 3.7 i wersja 4.0,
> dzialaja z czyms takim:
> 
> bcc .. -DVENDOR="$(VENDOR)"
> 
> Fakt, jest to zbyt oczywiste aby przyszlo do glowy jako pierwsze :)

Dziekuje Ci za pomoc (i prosze o nia w dalszym ciagu :), lecz...
Tez probowalem, ale nie do konca jest ok...

Nieprecyzyjnie okreslilem poprzednio z czym mam klopot.
Otoz...

Z makefile tworze zbior konfiguracyjny powiedzmy zzz.cfg
w ktorym jest wszystko ok.
wyglada to tak:

  -n\!obj -Ic:\bc5\include;..\win -c -WM
  -DMT;_RTLDLL;VENDOR="Sun" -3 -d -w -v- -vi- -O2 -w-par -w-stu

ale potem w zbiorze ktory kompiluje z uzyciem tego zbioru
poprzez: 

  bcc +zzz.cfg zbior.c

dostaje stala VENDOR == Sun a nie "Sun"
i wywala mi sie dokladnie w instrukcjach typu:

funkcja("prefix" VENDOR "postfix");

bo po preprocesorze jest:
 
funkcja("prefix" Sun "postfix");

a nie tak jak powinno byc (czy raczej jak bym oczekiwal):

funkcja("prefix" "Sun" "postfix");

-- 
Pozdrawiam                                         Adam Karpierz   
mailto:karpierz@intertele.pl
http://www.intertele.pl/users/karpierz 
Re: Kopoty z makefile Borlanda
#1169
Author: Pawel Piotrowski
Date: Tue, 03 Feb 1998 13:23
38 lines
2037 bytes
Karpierz wrote:

>   -n\!obj -Ic:\bc5\include;..\win -c -WM
>   -DMT;_RTLDLL;VENDOR="Sun" -3 -d -w -v- -vi- -O2 -w-par -w-stu
> 
> ale potem w zbiorze ktory kompiluje z uzyciem tego zbioru
> poprzez:
> 
>   bcc +zzz.cfg zbior.c
> 
> dostaje stala VENDOR == Sun a nie "Sun"
> i wywala mi sie dokladnie w instrukcjach typu:
> 
> funkcja("prefix" VENDOR "postfix");
> bo po preprocesorze jest:
> funkcja("prefix" Sun "postfix");
> a nie tak jak powinno byc (czy raczej jak bym oczekiwal):
> funkcja("prefix" "Sun" "postfix");


Przyjrzalem sie temu (zaznaczam ze w BC5, ale pewnie w BC4.4 jest
podobnie).O ile definicje VENDOR masz w pliku konfiguracyjnym to nie
znalazlem wyjscia bo:
-DVENDOR="SUN" - odrzuca '"' i sytuacja taka jak opisujesz
-DVENDOR=\"SUN\" zostawia to tak jak jest (z backslashami) i blad
kompilacji

jezeli natomiast sefinicje przeniesiesz do linii wywolania programu
bcc +zz.cfg -DVENDOR=\"SUN\" a.c 
to dziala poprawnie. Wic jezeli to jedyny tego typu string ta chyba po
problemie, jezelili masz ich duzo no to pronlem z dlugoscia commandline.

Tak na marginesie, problemy wywolywane sa przez preprocessor cpp.exe -
to na jego wyjsciu sa takie kwiatki (zjadanie '"'). Moze mozna sprobowac
podlozyc inny preprocessor (z innego pakietu ).

Pozdrawiam i powodzenia
Pawel
Re: Kopoty z makefile Borlanda
#1171
Author: Przemek Borys
Date: Tue, 03 Feb 1998 13:44
12 lines
1140 bytes
On 3 Feb 1998 12:26:46 GMT, Karpierz <karpierz@inter.intertele.pl> wrote:
>bo po preprocesorze jest:
>funkcja("prefix" Sun "postfix");
>a nie tak jak powinno byc (czy raczej jak bym oczekiwal):
>funkcja("prefix" "Sun" "postfix");

$(CC) blabla -DNAME="\"$(VENDOR)\"" blabla

To rozwiązanie, którego ja zwykle używam - i działa :)

-- 
( ) Przemek [http://rhea.ids.pl/~pborys]
Re: Kopoty z makefile Borlanda
#1173
Author: Michal Kaczmarczyk
Date: Tue, 03 Feb 1998 15:46
55 lines
2137 bytes
On 3 Feb 1998, Karpierz wrote:

> Nieprecyzyjnie okreslilem poprzednio z czym mam klopot.
> Otoz...
> 
> Z makefile tworze zbior konfiguracyjny powiedzmy zzz.cfg
> w ktorym jest wszystko ok.
> wyglada to tak:
> 
>   -n\!obj -Ic:\bc5\include;..\win -c -WM
>   -DMT;_RTLDLL;VENDOR="Sun" -3 -d -w -v- -vi- -O2 -w-par -w-stu

Mój plik konfiguracyjny a.cfg wygląda tak:

-DVENDOR="Sun"

> ale potem w zbiorze ktory kompiluje z uzyciem tego zbioru
> poprzez: 
> 
>   bcc +zzz.cfg zbior.c

A ja tak (makefile):

a.exe:
 bcc +a.cfg a.c

Mój program a.c wygląda tak:

main(){printf(VENDOR);}

Po zrobieniu make i uruchomieniu a.exe wypisuje Sun. Jak zmienię a.cfg na

-DVENDOR="\"Sun\""

To program wyświetla - zgodnie z oczekiwaniami - "Sun" (z cudzysłowami). 

> dostaje stala VENDOR == Sun a nie "Sun"
> i wywala mi sie dokladnie w instrukcjach typu:
> 
> funkcja("prefix" VENDOR "postfix");
> 
> bo po preprocesorze jest:
>  
> funkcja("prefix" Sun "postfix");

Niemożliwe...

> a nie tak jak powinno byc (czy raczej jak bym oczekiwal):
> 
> funkcja("prefix" "Sun" "postfix");

A może powinno być tak: 'funkcja("prefix", "Sun", "postfix");'? ;-)

_______________________________________________________________________________
Michał Kaczmarczyk  mailto:mik@iname.com http://student.uci.agh.edu.pl/~kaczmar
Re: Kopoty z makefile Borlanda
#1170
Author: Karpierz
Date: Tue, 03 Feb 1998 17:53
42 lines
2426 bytes
Pawel Piotrowski <pietras@sopot.lex.pl> napisal
[...]
> Przyjrzalem sie temu (zaznaczam ze w BC5, ale pewnie w 
> BC4.4 jest podobnie).

Ku mojemu wielkiemu zdziwieniu okazalo sie ze nie.

>O ile definicje VENDOR masz w pliku konfiguracyjnym to nie
> znalazlem wyjscia bo:
> -DVENDOR="SUN" - odrzuca '"' i sytuacja taka jak opisujesz
> -DVENDOR=\"SUN\" zostawia to tak jak jest (z backslashami) i blad
> kompilacji
> 
> jezeli natomiast sefinicje przeniesiesz do linii wywolania programu
> bcc +zz.cfg -DVENDOR=\"SUN\" a.c 
> to dziala poprawnie. Wic jezeli to jedyny tego typu string ta chyba po
> problemie, jezelili masz ich duzo no to pronlem z dlugoscia commandline.
> 
> Tak na marginesie, problemy wywolywane sa przez preprocessor cpp.exe -
> to na jego wyjsciu sa takie kwiatki (zjadanie '"'). Moze mozna sprobowac
> podlozyc inny preprocessor (z innego pakietu ).

Dzieki Ci Pawle jeszcze raz za pomoc. 
Dzieki niej ustalilem wreszcie w czym rzecz. 
Otoz okazalo sie po prostu ze w BC5.02 jest najnormalniejszy w 
swiecie blad preprocesora w przypadku uzycia pliku konfiguracyjnego.
Dla BC5.02 jest dokladnie tak jak napisales, natomiast w BC4.52
bez problemu poprawnie kompiluje zawarta w pliku konf. konstrukcje:

-DVENDOR="SUN"

(ale podobnie jak w 5.02 nie przyjmuje -DVENDOR=\"SUN\"
co jest jedyna forma dopuszczalna dla linii komend zarowno
w 4.52 jak i w 5.02)

Sprawdzalem produkujac pliki *.i preprocesorow.
Nie ma zadnych watpliwosci. Borland znow dal "popalic"....

-- 
Pozdrawiam                                         Adam Karpierz   
mailto:karpierz@intertele.pl
http://www.intertele.pl/users/karpierz 
Re: Kopoty z makefile Borlanda
#1172
Author: Karpierz
Date: Wed, 04 Feb 1998 10:53
23 lines
1653 bytes
Przemek Borys <pborys@p-soft.silesia.linux.org.pl> napisal
Karpierz <karpierz@inter.intertele.pl> wrote:
> >bo po preprocesorze jest:
> >funkcja("prefix" Sun "postfix");
> >a nie tak jak powinno byc (czy raczej jak bym oczekiwal):
> >funkcja("prefix" "Sun" "postfix");
> 
> $(CC) blabla -DNAME="\"$(VENDOR)\"" blabla
> 
> To rozwiązanie, którego ja zwykle używam - i działa :)

Tak, ale tylko z linii komend. Z pliku konfiguracyjnego nie dziala.
A gdy jest wiecej tego typu definicji to w lini komend ich nie 
pomiescisz. W BC5.02 wiecej niz nie dziala. 
Daje piekny komunikat: "Internal compiler error"...
Borland w 5.02 sknocil cos w preprocesorze.
Natomiast w 4.52 dziala z pliku ale tylko jako:
-DNAME="$(VENDOR)"

-- 
Pozdrawiam                                         Adam Karpierz   
mailto:karpierz@intertele.pl
http://www.intertele.pl/users/karpierz 
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