|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
DeRatizators
Joined: 27 Apr 2006 Posts: 492
|
Posted: Wed Aug 22, 2007 10:32 pm Post subject: VC2005 Direktīvas un ceļi |
|
Kādu laiku nomoka kāds jautājums ar VC2005 Express konfigurēšanu.
Man ir 1 'Solution', kurā ir vairāki 'Project'. Projekti dažādās kombinācijās izmanto source failus, kas fiziski atrodas vienā vietā.
Dažās vietās tiek izmantotas precompile direktīvas.
Viss ir lieliski, bet ir viens 'bet' :]
Dēļ direktīvām man katru reizi jāpārkompilē viss projekts, ja es iepriekš esmu strādājis ar projektu ar atškirīgām direktīvām. Kā to var atrisināt ? _________________ Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Aug 22, 2007 10:45 pm Post subject: |
|
Cik saprotu, tad tajās kopējās sourcēs ir dažādas prekompilētā headera inklūdes?
No kopējiem source failiem nevar uztaisīt statisku bibliotēku atsevišķā projektā, kuru pielinko klāt tiem projektiem, kuriem vajag? Ja var, tad prekompilētā headera inklūde būtu viena kopēja tās statiskās bibliotēkas sourcēm, ne?
Vēl nezinu vai īsti tas strādās, bet varbūt var tās prekompilēto headeru inklūdes uzrakstīt šādi:
Code: | #if PROJECT_A
#include "project_a/stdafx.h"
#elif PROJECT_B
#include "project_b/stdafx.h"
#endif |
|
|
Back to top |
|
|
DeRatizators
Joined: 27 Apr 2006 Posts: 492
|
Posted: Wed Aug 22, 2007 11:12 pm Post subject: |
|
Nu es būtībā tā arī daru.
Tik man direktīvas tiek izmantotas arī CPP failos.
Škiet, ka komilātors cenšas sakombinēt sanākušus failus pēc dažādu projektu direktīvu izmanotšanas vienā klucī [rodas runtime linking errori]
Var mēgināt uztaisīt kādu papildus interfeisu, kas ļautu abstrahēties no visām iespējamām situācijām, kas saistītas ar direktīvu atškirībām. Tas ir izdarāms, jo šādu situāciju nav daudz, bet vai tiešām nav nekādas iespējas likt pusfabrikātiem (kā nu tur viņi saucas C++ pasaulē) likt sabirt dažādās direktorijās, lai VC nebūtu tieksmes salikt kopā līdzīgos gabalus no dažādiem projektiem ? _________________ Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Aug 22, 2007 11:17 pm Post subject: |
|
Ah, tev "kopējo" .cpp failu saturs nemaz nav tik kopīgs? Tb katram projektam savs atkarībā no preprocesora #defainiem?
Nu ja tā, tad tas ir slikti, un neko labāku tu nepanāksi. #defaini ir īvili un no tiem pēc iespējas vairāk jāizvairās. Tos apiet varbūt varētu tikai ar vēl lielākiem preprocesoru hakiem, kas diez vai palīdzētu tālākā koda izmantošanā/labošanā. Agrāk vai vēlāk katrs C++ programmētājs uzraujās uz kautkā tāda, kas "skaisti" nodemostrē #defainu sliktumu.
Vai arī es kautko nesaprotu, ko tu sauc par direktīvām un tiem "pusfabrikātiem"? Un kādā sakarā te ir linkera errori? Vai arī - kas vispāŗ ir runtime linking?? |
|
Back to top |
|
|
DeRatizators
Joined: 27 Apr 2006 Posts: 492
|
Posted: Wed Aug 22, 2007 11:27 pm Post subject: |
|
bubu wrote: | Ah, tev "kopējo" .cpp failu saturs nemaz nav tik kopīgs? Tb katram projektam savs atkarībā no preprocesora #defainiem?
Nu ja tā, tad tas ir slikti, un neko labāku tu nepanāksi. #defaini ir īvili un no tiem pēc iespējas vairāk jāizvairās. Tos apiet varbūt varētu tikai ar vēl lielākiem preprocesoru hakiem, kas diez vai palīdzētu tālākā koda izmantošanā/labošanā. Agrāk vai vēlāk katrs C++ programmētājs uzraujās uz kautkā tāda, kas "skaisti" nodemostrē #defainu sliktumu.
Vai arī es kautko nesaprotu, ko tu sauc par direktīvām un tiem "pusfabrikātiem"? Un kādā sakarā te ir linkera errori? Vai arī - kas vispāŗ ir runtime linking?? |
Tas izskatās aptuveni šādi:
Nokimpilēju project_a kopā ar failu x.cpp ar direktīvu project_a.
Pēc tam nemainot failu X.cpp nokompilēju project_b, kuram jābūt "izmainītam" ņemot vērā direktīvu project_b, bet tas nenotiek. Kompilātors paķer veco, sagatavoto X.cpp priekš project_a un laimīgs uzcep dll, kas protams centīsies izsaukt citus koda gabalus, kas patiesībā ir tikai project_a, bet nav b :)
Ok, paldies ;]
Tādi man ir škiet kādās 3 vietās.
Kad pārkompilēšanās laiks būs par ilgu, saņemšos un pielabošu, lai tur varētu iztikt bez direktīvām. _________________ Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor. |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Thu Aug 23, 2007 11:31 am Post subject: |
|
Ielikšu nelielu offtopiku -
Pie projekta parametriem var izķeksēt tos projektus, kurus tev nevajag.
Ja šis nepalīdz, tad sorry par traucēšanu. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|