Toon posts:

C++ include pad

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben aan het crosscompilen, maar het include pad wordt niet recursief afgezocht. Ook krijg ik de volgende error :|

sparc-sun-solaris-g++ (knip)
/usr/local/sparc-sun-solaris/include/3.2.2/iostream:44: bits/c++config.h:

En daarna nog een hele lijst van .h files die niet gevonden worden terwijl ze daar in het pad staan waar iostream ook in staat, alleen enkele subdirectories hoger :'(

Dit staat in o.a. Makefile.am:
CROSS= /usr/local/sparc-sun-solaris/include/3.2.2
INCLUDES = -I. -I$(srcdir) -I$(CROSS)

Het gaat er dus om dat het include pad recursief afgezocht moet worden. Hoe krijg ik dat voor elkaar ?

[ Voor 65% gewijzigd door Verwijderd op 31-03-2003 17:23 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Uhm, kun je een kleiner voorbeeldje geven? want hier is geen touw aan vast te knopen. En laat ook gelijk wat code zien (die #include regels dus, en waar de headers zich bevinden)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Ik heb het wat ingekort.

Verwijderd

Volgens mij moet je het pad naar c++config.h achterhalen, en daarvan de "bits/c++config.h" af halen om vervolgens de overgebleven padverwijzing toe te voegen aan je include lijstje.

Geen enkele compiler zoekt de include-paden recursief af, althans voor zover ik weet...

Verwijderd

Topicstarter
Dat helpt niet, want dan zou ik het pad in elke .h file moeten wijzigen, bijv.
iostream:44: bits/c++config.h

Het moet toch mogelijk zijn om een project te includen dat meerdere directories heeft ? Zou het komen dat ik een te oude gcc compiler gebruik die het concept
#include <directory/source>
niet kent ? De crosscompiler is gebouwd met de sources van gcc 2.8.1.

[ Voor 3% gewijzigd door Verwijderd op 31-03-2003 16:51 ]


Verwijderd

Verwijderd schreef op 31 March 2003 @ 16:50:
Dat helpt niet, want dan zou ik het pad in elke .h file moeten wijzigen, bijv.
iostream:44: bits/c++config.h

Het moet toch mogelijk zijn om een project te includen dat meerdere directories heeft ? Zou het komen dat ik een te oude gcc compiler gebruik die het concept
#include <directory/source>
niet kent ? De crosscompiler is gebouwd met de sources van gcc 2.8.1.
/me what is the name... ;)

Elke compiler doet hetzelfde als jouw gcc 2.8.1 hoor...

je includelijstje is datgene wat geexpandeerd wordt als je $INCLUDES op zou vragen...

Moet iets worden zoals:
code:
1
2
CROSS= -I/usr/local/sparc-sun-solaris/include/3.2.2 -I/usr/local/sparc-sun-solaris/include/3.2.2/sparc-sun-solaris
INCLUDES = -I. -I$(srcdir) $(CROSS)


Als c++config.h zou staan in /usr/local/sparc-sun-solaris/include/3.2.2/sparc-sun-solaris/bits/
(Let ook op de aanpassing van de INCLUDES regel!!!)

Dat is wat ik bedoelde... Toch vraag ik me af waarom jij (blijkbaar) "-nostdinc" gebruikt, je cross-gecompileerde compiler zou zijn eigen standaard include/lib dirs zelf moeten vinden, alleen de overige paden hoef je dan nog maar op geven.... tenzij je de verkeerde compiler gebruikt of met paden hebt zitten schuiven...

[ Voor 32% gewijzigd door Verwijderd op 03-04-2003 09:41 ]


Verwijderd

Topicstarter
Ahaaa je hebt gelijk. Ik heb nu egcs als crosscompiler gebouwd en gelijk egcs ook als mijn native compiler installed, hij vind nu inderdaad de std libs.

Maar nu heb ik een volgend probleem: de source code is gemaakt voor gcc3, dus nu wordt er op zoek gegaan naar <iostream> terwijl ik alleen een <iostream.h> heb.
Is hier een truukje voor of moet de std libs van gcc3 zonder .h kopieren en gaan zitten editen ? Ik hoop van niet.. :'(

[ Voor 4% gewijzigd door Verwijderd op 31-03-2003 17:52 ]


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
GCC<3 heeft standaard geen correcte libs, ik denk dat het handigste is om de STL van Dinkumware te kopen. Check wel of <iostream> daar bij zit, want dat weet ik niet zeker.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Topicstarter
Kan ik een compiler directive meegeven dat bij elke h file een header geinclude word (waarin ik middels defines opgeef dat er een .h achter moet of niet)?

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Verwijderd schreef op 01 April 2003 @ 18:24:
Kan ik een compiler directive meegeven dat bij elke h file een header geinclude word (waarin ik middels defines opgeef dat er een .h achter moet of niet)?
Ik begrijp volgens mij niet helemaal wat je bedoelt, maar dit kan wel:

C++:
1
2
3
4
5
#ifdef INCLUDE_MET_PUNT_H
#include <bert.h>
#else
#include <bert>
#endif

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
Verwijderd schreef op 01 April 2003 @ 18:24:
Kan ik een compiler directive meegeven dat bij elke h file een header geinclude word (waarin ik middels defines opgeef dat er een .h achter moet of niet)?
Iha nee, en het zou je hier ook niet helpen. Als je programma <iostream> gebruikt, dan gebruikt dat programma de "nieuwe" syntax. Dwz std::cout ipv ::cout. Als je de meegeleverde GCC2.8.1 <iostream.h> gebruikt dan bestaat std::cout niet.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1