tr-demoscene

the scene => coding => pc => Konuyu başlatan: anesthetic - 16.03.2006 00:08:14

Başlık: lcc-win32'de include problemi
Gönderen: anesthetic - 16.03.2006 00:08:14
şimdi ben projeyi hem vc++ hem de lcc-win32 ile derlemek istiyorum. Ama iki derleyicinin #include "dosya" tipinde directiveleri anlama yöntemleri farklı.

Örneğin şöyle bir dizin yapısı olsun.
source.c
defdef.h
defdefex.h

Source.c'den def.h'ı, def.h'tan da defex.h'ı include etmek istiyorum.

VC ile source.c içinde:
#include "defdef.h"
diyorum
def içinde de:
#include "defex.h"

diyorum ve sorunsuz çalışıyor.

lcc-win32 ile source.c içinden def.h'ı ekleme yöntemim aynı ama def.h içinde
#include "defdefex.h"
demeliyim, çünkü lcc pathleri o an okuduğu dosyaya göre değil de derlensin diye verdiğiniz dosyaya göre belirliyor (bu durumda source.c'ye göre)

Bu durumda iki seçeneğim var, ya tüm dosyaları aynı dizine koyacağım ya da #ifdef __LCC__ filan kullanarak iki farklı include tipi vereceğim. Ama hem düzinelerce dosya olduğu için hem de her seferinde iki farklı path belirtmek istemediğimden ikisi de cazip gelmiyor.

Aranızda böyle bir sorunla karşılaşıp lcc'ye durumu anlatabilmiş olan var mı? Derleyici seçeneklerinden baktım öyle bir şey göremedim. Google'da aradım bu problemden bahseden var mı diye yine bulamadım.

Bu yol imkansız ise VC'ye, pathleri lcc usülü anlaması için bir şey yapabilir miyim?
Başlık: lcc-win32'de include problemi
Gönderen: skate - 16.03.2006 00:35:06
Environment Variable kullanabilirsin. Örneğin Crystal Space engine'ini "CRYSTAL" diye bir Env. Var. tanımlamadan compile edemiyorsun. Tahmin ettiğim kadarıyla seninle aynı derdi paylaştıkları için bu şekilde çözmüşler. Bence de güzel bir çözüm değil ama önrekleri de olduğu için bunu kullanmanı önerebilirim.
Başlık: lcc-win32'de include problemi
Gönderen: nightlord - 16.03.2006 01:20:22
butun includelari bir yere toplamak istemiyorsan compile satirlarina headerlarin durdugu degisik include directorylerini optionlarla verebilirsin. lcc ve vc deki option ne bilmiyorum ama gcc de msela

g++ -c -o hede.o hede.cpp -I$(ROOT)/def -I$(ROOT)/baskadef

cpp dosyalari icinden de hep #include "hedele.h" dersin.

tabii bu tek basina anlamsiz gorunmekle beraber makefile kullandigin zaman cok otomatize edilebilir. Netekim $(INCLUDES) falan gibi bi makefile degiskeni icine directoryleri toplamak da mumkun.

hatta bir suru modul halinde organize ettigin bi source treeyi her modulun bi makefile'i olacak ve her birinin makefile'i icinde ihtiyac duydugu modul adlari gececek sekilde duzenleyip, biraz makefile magic ile beraber butun compilation'i os'tan ve compilerdan bagimsiz hale getirebilirsin.
Başlık: lcc-win32'de include problemi
Gönderen: anesthetic - 16.03.2006 23:37:01
evet include directorylerini derleyiciye vermek sorunu çözdü. diğer yolları denemeye gerek kalmadı. ikinize de teşekkürler.