dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

VC2005 Direktīvas un ceļi

 
dev.gamez.lv Forum Index -> Iesācējiem
View previous topic :: View next topic  
Author Message
DeRatizators



Joined: 27 Apr 2006
Posts: 492

PostPosted: 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
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
DeRatizators



Joined: 27 Apr 2006
Posts: 492

PostPosted: 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 ? Smile
_________________
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
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
DeRatizators



Joined: 27 Apr 2006
Posts: 492

PostPosted: 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
View user's profile
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: 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. Embarassed
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
Display posts from previous:   
dev.gamez.lv Forum Index -> Iesācējiem All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
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