Toon posts:

[GNU] Automake & PCH

Pagina: 1
Acties:

Onderwerpen


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Ik wil precompiled headers gebruiken in een project dat automake gebruikt als buildsystem. Als ik handmatig g++ aanroep is het simpel:

code:
1
2
$ g++ pch.h 
$ g++ main.cpp


Maar hoe krijg ik dit voor elkaar met automake? Het volgende werkt niet, pch.h wordt gewoon genegeerd. De PCH moet gebouwd worden en dit moet gebeuren voordat andere files gebouwd worden. Weet iemand hoe dit moet? Automake documentie zelf zegt eigenlijk niks over PCH.

Makefile.am:
code:
1
2
bin_PROGRAMS = hello
hello_SOURCES = main.cpp pch.h

  • Glorificationer426
  • Registratie: November 2001
  • Laatst online: 30-05 21:10

Glorificationer426

come we hero rush yes?

Misschien door dmv een dependency aangeven dat main.cpp afhankelijk is van pch.h, en daar een aparte rule voor maken?

(@DiscWout) omg
(@DiscWout) bijna over mn nek :D
(@DiscWout) echt zo een boer laten, hele mond vol kots :D


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
pch.h is al (automatisch) een dependency van main.cpp. Hoe vertel ik automake dat die .h ook gebouwd moet worden?

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Niemand? Zeker allemaal te druk met Slechtste programmeervoorbeelden? :p

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 31-05 21:20

Creepy

Tactical Espionage Splatterer

Kan je pch.h opnemen in build_SOURCES?. Alles wat daarin staat zou als eerste gebuild moeten worden.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have star problems" --Kevlin Henney


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Creepy schreef op vrijdag 24 juni 2011 @ 11:05:
Kan je pch.h opnemen in build_SOURCES?. Alles wat daarin staat zou als eerste gebuild moeten worden.
Daar staat hij al toch? Via hello_SOURCES?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 31-05 21:20

Creepy

Tactical Espionage Splatterer

BUILD_SOURCES is om aan te geven dat het voor al het andere moet worden gemaakt. Ook heeft automake automatische tracking voor header files waardoor de header uit je hello_SOURCES wordt genegeerd.

Zie http://www.gnu.org/s/hell...uilt-Sources-Example.html voor een voorbeeld hoe met een expliciet te compileren header file om te gaan.
A solution is to require bindir.h to be built before anything else. This is what BUILT_SOURCES is meant for (see Sources).

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have star problems" --Kevlin Henney


Acties:
  • 0Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Nope, BUILT_SOURCES = pch.h (met een T) werkt ook niet, maar is waarschijnlijk wel een stap in de goede richting om iets als eerste te bouwen.

Met een rule voor pch.h.gch werkt het wel:
g++ pch.h -o $@ $<

Echter is dat niet exact dezelfde g++ invocatie als voor .cpp files, wat wel nodig is. Hoe zorg ik ervoor dat precies dezelfde command line wordt gebruikt?

Acties:
  • 0Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Volgens mij is het gelukt:

code:
1
2
3
4
BUILT_SOURCES = pch.h.gch

pch.h.gch: pch.h
    ${CXXCOMPILE} -o $@ $<
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee