Problem mit SCons

Bunny_Joe

BIOS-Overclocker(in)
Hallo PCGHX,

Ich habe angefangen "Angewandte Informatik" zu studieren und jetzt beginnen die ersten eigenen C-Programme. Der Quellcode ist nicht das Problem, es ist SCons.
Wir müssen damit das Programm erstellen, wobei bei mir sich immer wieder ein Fehler auftut.
Im Grunde brauch ich ja nur meine Mein_Programm.c Datei und die SConstruct Datei. Alles in einem Verzeichnis, soweit ich verstanden habe. Wenn ich nun in die Eingabekonsole gehe (Win7 x64), dort in in das Verzeichnis wechsle, wo die beiden Dateien liegen und dann "scons" ausführe, dann kommt diese Fehlermeldung:

scons: *** No SConstruct file found.
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.0\SCons\Script\Main.py"
, line 905, in _main

Also keine SConstruct-Datei gefunden, obwohl ich eine erstellt habe, in das gleiche Verzeichnis gelegt habe wie die .c-Datei und auch in diesem Verzeichnis SCons ausgeführt habe.

Habe ich vielleicht SConstruct falsch erstellt? Habe eine neue Textdatei mit dem Inhalt erstellt: Program('Mein_Programm.c')
und diese dann so gespeichert. Liegts daran?

Habe Python 2.7.6 installiert. SCons ist 2.3.0
 
Zuletzt bearbeitet:
Vorweg: Ich hab keine Ahnung. Hab nur eine handvoll Mal mit scons gearbeitet.
Aber: Das " Habe eine neue Textdatei mit dem Inhalt erstellt: Program('Mein_Programm.c')" klingt verdächtig. Du hast die Dateierweiterung ".txt" aber schon entfernt, oder? Gegebenenfalls Dateierweiterungen anzeigen lassen und dann entfernen...
 
Habe mal in .py geändert, da ich jetzt gelesen hab, dass das ein Python Script sein soll. Funktioniert trotzdem nicht :(
 
Wenn ich das richtig verstehe muss deine Datei "SConstruct" heißen, also ohne Dateiendung.
Führ mal in der Commandozeile, nachdem du in dein verzeichnis gewechselt hast, "dir" aus, um dir alle Dateien anzeigen zu lassen. Und poste hier mal die Ausgabe.
 
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

C:\Users\[Name gelöscht]>cd desktop

C:\Users\[Name gelöscht]\Desktop>dir
Datenträger in Laufwerk C: ist Windows SSD
Volumeseriennummer: 142D-3848

Verzeichnis von C:\Users\[Name gelöscht]\Desktop

01.12.2013 14:44 <DIR> .
01.12.2013 14:44 <DIR> ..
25.07.2013 17:59 <DIR> audio
14.10.2013 19:46 <DIR> Bewerbungen
08.10.2013 14:35 881 fraps.lnk
08.11.2013 17:39 <DIR> G600 Contest
30.11.2013 21:07 62 Mein_Programm.c
24.11.2013 20:09 <DIR> NEW
26.11.2013 05:54 1.058 Notepad++.lnk
25.11.2013 16:37 <DIR> Programme
01.12.2013 14:45 26 SConstruct.py
23.07.2013 10:57 1.817 Spotify.lnk
25.11.2013 16:25 <DIR> Stuff
28.07.2013 20:42 1.213 TeamSpeak 3 Client.lnk
24.07.2013 13:31 1.909 Visual Studio 2012.lnk
24.09.2013 19:13 1.312 WinRAR.lnk
8 Datei(en), 8.278 Bytes
8 Verzeichnis(se), 25.947.156.480 Bytes frei

C:\Users\[Name gelöscht]\Desktop>


//habe mal meinen Namen aus den Verzeichnissen gelöscht, ansonsten alles so kopiert. Das Problem ist, dass wenn ich auch ganz einfach den Editor öffne und die Datei OHNE Dateiendung speichere es dann immernoch eine .txt Datei ist. Das habe ich schon probiert-> geht auch nicht.
 
Zuletzt bearbeitet:
Nur um sicher zugehen: Hast du mal "händisch" - im Explorer, falls du den Hacken bei "Bekannte Dateierweiterungen anzeigen" (o.ä.) gesetzt hast, oder über die Konsole (ren für rename, glaub ich) - die Dateierweiterung gelöscht?

Also zum Beispiel
ren SConstruct.py SConstruct
bzw
move SConstruct.py SConstruct

Ansonsten würd ich dir als Editor vielleicht mal sowas wie Notepad++ empfehlen, der ist bei sowas nicht so starrsinnig, mein ich ;)
 
Zuletzt bearbeitet:
C:\Users\[Name gelöscht]\Desktop>scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
cl /FoMein_Programm.obj /c Mein_Programm.c /nologo
Der Befehl "cl" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
scons: *** [Mein_Programm.obj] Error 1
scons: building terminated because of errors.


So jetzt geht es (Danke Dragonix :D), aber der meckert, dass er 'cl' nicht kennt. Muss mal weiter suchen....

Edit: Alles klar! Habs gelöst mit einem Workaround, den ich gefunden und angepasst habe.

#need glob to get source files
import glob

#Create an environment with x86 target as msvc does not support x64 and target defalts to host(x64).
#This fixes the following error:
# 'cl' is not recognized as an internal or external command,
# operable program or batch file.
env = Environment(TARGET_ARCH="x86")

#Target is myprogram.exe
#Source is a list of source files.
env.Program(target='Mein_Programm', source = glob.glob('*.c'))


Aber ich frage mich warum das überhaupt nötig ist, weiß da jemand etwas besser bescheid?^^
Anscheinend gibt der bei x64 auf und ich muss ihn auf x86 umlenken...
 
Zuletzt bearbeitet:
"cl" ist der Befehl, der den Visual C++ Compiler anspricht. Damit man nur den Befehl und nicht den ganzen Pfad des Programms angeben muss, gibt es Umgebungsvariablen, die solche Pfade enthalten. Scheinbar ist cl nicht gesetzt in der Standardumgebung und daher wird als Target x86 genommen.. So recht schlau werde ich daraus aber auch nicht..
 
Zurück