C++ und scons und #include

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
feldmaus
Beiträge: 1307
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

C++ und scons und #include

Beitrag von feldmaus » 18.07.2007 17:11:56

Hi Alle,

Ich verusche mich an einem C++ Programm und weiss nicht wie ich den Compiler klar mache wie er die Header rekursive zu suchen hat.
Die benötigten header Dateien liegen alle unter "/usr/local/include/" allerdings in Unterordnern. Nun wollte ich nicht alle Ordner angeben, sondern nur das Verzeichnis "/usr/local/include/", ist das sinnvoll?

Frage --> Was bedeutet #include?
Antwort --> Das Raute Symbol wird von scons durch den Projekt-Pfad ersetzt. --> "/Pfad zu Projekt/include == #include"

Problem --> Ich möchte das scons nach header Dateien in Unterordnern sucht.

Frage --> Wie mache ich das?

Hier mein scons Script,

Code: Alles auswählen

#Python Modul os importieren
import os

#Platform Name in Variable speichern
platform = os.uname()[0]

#Abfrage der Platform
if platform == 'Linux':
	print 'Platform is Linux'
	env = Environment(CPPPATH =['#include',
				    '#usr/local/include',
				    '#/usr/include',
				    '#/usr/local/games/ogrenew/Samples/Common/include'])
	env.Program('operationROF', 'src/main.cpp')
elif platform == 'WIN32':
	print 'platform is WIN32'
else:
	print 'Platform is unknown'
Grüße Markus
Zuletzt geändert von feldmaus am 18.07.2007 17:35:03, insgesamt 1-mal geändert.

Benutzeravatar
armin
Beiträge: 2682
Registriert: 17.03.2005 11:49:14

Beitrag von armin » 18.07.2007 17:13:59

Im Normalfall solltest du den Unterordner einfach beim Include mit angeben.
Zum Beispiel so:

Code: Alles auswählen

sys/types.h
Meiner Meinung nach macht es nicht viel Sinn, alle Unterordner auch noch in den Include-Pfad zu packen. Vermutlich wird es dabei auch zu Namens-Kollisionen kommen.
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams

Benutzeravatar
feldmaus
Beiträge: 1307
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Beitrag von feldmaus » 18.07.2007 17:32:23

Sorry habe oben eine Fehler gemacht.

Ich habe vor die Pfade überall ein "#" gemacht, da ich es nicht besser wusste.

Nur einer dieser Pfade befindet sich im Projekt Verzeichnis, die anderen sind unter dem Wurzelverzeichnis des Systems.

Also folgende Pfade benötige ich,

Code: Alles auswählen

/usr/local/include/OIS
/usr/local/include/CEGUI
/usr/local/include/OGRE
Wäre es möglich stattdessen

Code: Alles auswählen

/usr/local/include/
anzugeben?

Grüße Markus

Benutzeravatar
armin
Beiträge: 2682
Registriert: 17.03.2005 11:49:14

Beitrag von armin » 18.07.2007 19:22:26

Was spricht dagegen OIS, CEGUI und OGRE jeweils noch dazu zu schreiben? Das ist eigentlich die gängige und sinvolle Praxis, da duso unter anderem direkt siehst, aus welchem Projekt die Include-Datei kommt.
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams

Antworten