[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

VC 2005 i includowanie plików

azot16

6/19/2007 2:34:00 AM

Witam.

Mam pytanie zwiazanie ze srodowiskiem VC 2005. Chodzi o dolaczanie
plików naglówkowych (#include). Zalózmy ze w katalogu projektu
utworzylem sobie katalog "Src" a w nim podkatalogi zwiazane z logika
programu np. "Log" i "Test". Plik "Src\Log\AppLog.h" jest includowany
przez plik "Src\Test\MainTest.cpp"

------------------------------
// File path => {solution}\Src\Test\MainTest.cpp

#include "..\Log\AppLog.h // Dziala
.....
------------------------------

Pytanie: w HTML jest cos takiego jak "base" np. <base href="http://
www.cos.pl/images/"> - czy mozna w projekcie VC ustawic jakas zmienna
(lub zrobic cos innego) tak aby uzyskac logiczny odpowiednik "base"
dla includowanych plików. Chodzi o to abym nie musial pisac sciezek
wzglednych typu "..\..\abc\def\Plik.h" tylko mógl napisac sciezke
wzgledem owego "base". W moim przykladzie chcialbym aby plik
MainTest.cpp wygladal tak:

------------------------------
// File path => {solution}\Src\Test\MainTest.cpp

#include "Src\Log\AppLog.h // Katalog "Src" jest brany wg czegos co
powyzej nazwalem "base"
.....
------------------------------

Czy ktos wie czy da sie cos takiego zrobic?

8 Answers

Mateusz Loskot

6/19/2007 2:50:00 AM

0

azot16 wrote:
> Pytanie: w HTML jest co? takiego jak "base" np. <base href="http://
> www.cos.pl/images/"> - czy mo?na w projekcie VC ustawia jak?? zmienn?
> (lub zrobia co? innego) tak aby uzyskaa logiczny odpowiednik "base"
> dla includowanych plików. Chodzi o to abym nie musia3 pisaa ?cie?ek
> wzglednych typu "..\..\abc\def\Plik.h" tylko móg3 napisaa ?cie?ke
> wzgledem owego "base"

Jak dla ka?dego kompilatora C/C++, tak i dla Visual C++ mo?esz
okre?lia ?cie?ki include, gdzie kompilator bedzie poszukiwa3 nag3ówków.

Przeczytaj to:

http://msdn2.microsoft.com/en-us/librar...(VS.80).aspx

a wszystko sie wyja?ni.

Pozdrawiam
--
Mateusz Loskot
http://mateusz....

Jacek Czerwinski

6/19/2007 7:00:00 AM

0

Dnia Mon, 18 Jun 2007 19:34:10 -0700, azot16 napisa3(a):

> Witam.
>
> Mam pytanie zwi?zanie ze ?rodowiskiem VC 2005. Chodzi o do3?czanie
> plików nag3ówkowych (#include). Za3ó?my ?e w katalogu projektu
> utworzy3em sobie katalog "Src" a w nim podkatalogi zwi?zane z logik?
> programu np. "Log" i "Test".
program C wykonywac sie bedzie bez ?róde3 wiec nie wiem czy to dobra
koncepcja katalogów - rypnie sie w innym ?rodowisku. To nie jest
interpreter.


> Plik "Src\Log\AppLog.h" jest includowany
> przez plik "Src\Test\MainTest.cpp"
>
> ------------------------------
> // File path => {solution}\Src\Test\MainTest.cpp
>
> #include "..\Log\AppLog.h // Dzia3a
> ....
> ------------------------------
>
> Pytanie: w HTML jest co? takiego jak "base" np. <base href="http://
> www.cos.pl/images/"> - czy mo?na w projekcie VC ustawia jak?? zmienn?
> (lub zrobia co? innego) tak aby uzyskaa logiczny odpowiednik "base"
> dla includowanych plików.

Czy?by kolejny programista dla którego C jest PHP-em bez dolarów?

My?le ?e bez czytania jednak sie nie obejdzie. Ka?dy troszke solidniejszy
podrecznik (webowy czy papierowy) wprowadzi3by cie na ?cie?ke includowania

azot16

6/20/2007 6:29:00 PM

0

> Jak dla kazdego kompilatora C/C++, tak i dla Visual C++ mozesz okreslic sciezki include, gdzie kompilator bedzie poszukiwal naglówków.

Wiem o tym
------------------

> http://msdn2.microsoft.com/en-us/librar...(VS.80).aspx

Nie o to mi chodzi.
------------------

Chodzi mi co cos nastepujacego. Mam katalog "Src" a w nim kilkanascie
podkatalogów. Wg twojej porady musialbym wyspecyfikowac wszystkie te
katalogi za pomoca opcji "/I", a ja chce osiagnac cos innego. Chce aby
kazdy include typu:

#include "Src\Test\Test.h"

rozwijal sie (dla kompilatora) np. na

#include "D:\Sources\Project19\Debug\Src\Test\Test.h"

czyli nie chce za kazdym razem wpisywac przedrostka "D:\Sources
\Project19\Debug\", tylko zdefiniowac go jako "baze" dla includów
uzytkownika (include ".."). W ten sposób, gdy zechce zmienic katalog
"Project19" na "Project20" zmienie tylko owa "baze" w projekcie i
wtedy #include "Src\Test\Test.h" bedzie pobieral pliki z katalogu "D:
\Sources\Project20\Debug\" a nie z "Project19". Z tego co pamietam to
pod Linux-em w makefile-u mozna bylo robic takie rzeczy, wiec
podejrzewam, ze MS równiez dodal taka funkcjonalnosc do VC tylko po
pierwsze nie wiem gdzie tego szukac, a po drugie zawalony jestem
robota, dlatego najpierw pytam na grupie, a dopiero potem bede szukal
na necie (w mysl zasady "kto pyta nie bladzi").

Jedrzej Dudkiewicz

6/20/2007 6:34:00 PM

0

> Chodzi mi co co? nastepuj?cego. Mam katalog "Src" a w nim kilkana?cie
> podkatalogów. Wg twojej porady musia3bym wyspecyfikowaa wszystkie te
> katalogi za pomoc? opcji "/I"

Ja na Twoim miejscu sprawdzi3bym zanim zacz?3bym marudzia.

JD

Mateusz Loskot

6/20/2007 6:45:00 PM

0

azot16 wrote:
>> http://msdn2.microsoft.com/en-us/librar...(VS.80).aspx
>
> Nie o to mi chodzi. ------------------
>
> Chodzi mi co co? nastepuj?cego. Mam katalog "Src" a w nim kilkana?cie
> podkatalogów. Wg twojej porady

nie mojej porady, a wg. dzia3ania kompilatora.

> musia3bym wyspecyfikowaa wszystkie te katalogi za pomoc? opcji "/I",

I tak sie to dok3adnie robi.

> a ja chce osi?gn?a co? innego. Chce
> aby ka?dy include typu:
>
> #include "Src\Test\Test.h"
>
> rozwija3 sie (dla kompilatora) np. na
>
> #include "D:\Sources\Project19\Debug\Src\Test\Test.h"


Tak kompilator to rozwinie, sk3adaj?c

/I /path/to/base/dir

ze ?cie?k? z

#include <subpath/to/file.h>

> czyli nie chce za ka?dym razem wpisywaa przedrostka "D:\Sources
> \Project19\Debug\", tylko zdefiniowaa go jako "baze" dla includów
> u?ytkownika (include ".."). W ten sposób, gdy zechce zmienia katalog
> "Project19" na "Project20" zmienie tylko ow? "baze" w projekcie i
> wtedy #include "Src\Test\Test.h" bedzie pobiera3 pliki z katalogu "D:
> \Sources\Project20\Debug\" a nie z "Project19".

Dok3adnie takie dzia3anie osi?gniesz.
Na takie zasadzie do3?czasz nag3ówki Boost, i wiele innych:

/I /my/path/to/boost/include

a w kodzie jest

#include <boost/scoped_ptr.hpp>

Wysy3asz program do Zenka,a ten zmienia warto?a /I na swoj?:

/I /zenek/ma/boost/w/innym/mscu

a kod pozosatje bez zmian.

Uwierz na s3owo albo przeczytaj ze zrozumianiem MSDN (na jedno wyjdzie).

Pozdrawiam
--
Mateusz Loskot
http://mateusz....

Mateusz Loskot

6/20/2007 6:46:00 PM

0

Jedrzej Dudkiewicz wrote:
>> Chodzi mi co co? nastepuj?cego. Mam katalog "Src" a w nim kilkana?cie
>> podkatalogów. Wg twojej porady musia3bym wyspecyfikowaa wszystkie te
>> katalogi za pomoc? opcji "/I"
>
> Ja na Twoim miejscu sprawdzi3bym zanim zacz?3bym marudzia.

Genialne w swojej prostocie, po grzyba waln?3em taki elaborat :-)

Pozdrawiam
--
Mateusz Loskot
http://mateusz....

azot16

6/20/2007 8:41:00 PM

0

> Ja na Twoim miejscu sprawdzilbym zanim zaczalbym marudzic.

Ja wiem, ze to generalnie powinno dzialac, ale mi NIE dzialalooo, wiec
pomyslalem, ze w wersji VC 2005 zrobili to jakos inaczej. Teraz (po
waszych zapewnieniach) wygenerowalem sobie nowy projekt pod VC 2005 i
sprawdzilem, ze jednak dziala.

Projekt w którym mi to nie dzialalo to projekt przekonwertowany z
wersji VC 6.0. Na szczescie juz rozwiazalem ten problem - na
komputerze kolegi uruchomilem VC 6.0 tam w projekcie ustawilem zadana
opcje "/I", a dopiero potem przekonwertowalem projekt w VC 2005 i
teraz mi kurde dziala. Troche jestem w plecy z robota, bo musze pare
rzeczy w VC 2005 zrobic od nowa, no ale juz jest dobrze.

PS. Panie JD nie potrzebnie sie tak unosisz. Zapewniam cie, ze i tobie
kiedys tez przytrafi sie sytuacja z "Archiwum X" i bedziesz sie "gapil
jak sroka w gnat" i szukal ratunku "po calej okolicy".

Jedrzej Dudkiewicz

6/20/2007 8:43:00 PM

0

> PS. Panie JD nie potrzebnie sie tak unosisz. Zapewniam cie, ?e i tobie
> kiedy? te? przytrafi sie sytuacja z "Archiwum X" i bedziesz sie "gapi3
> jak sroka w gnat" i szuka3 ratunku "po ca3ej okolicy".

Alez ja sie nie unosze, ja zwracam Twoja uwage na fakt, ze warto cos dwa do
trzech razy sprawdzic zanim napisze sie na grupe.

JD