• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Mit Xcode aus C Datei ein Programm erstellen

Apple-Liebhaber

Allington Pepping
Registriert
04.09.10
Beiträge
194
Hi!
Ich habe mir vor kurzem Xcode heruntergeladen(Mac AppStore). Nun habe ich ein einfaches Hello World! Command Line Tool geschrieben. Es wird aber nur im unteren Bereich (siehe Anhang) von Xcode "Hello World!" ausgegeben. Ich möchte aber ein eigenes Programm erstellen, wie ich es von Windows gewohnt bin! Wie kann ich das in Xcode oder irgendwo anstellen? Danke!

Apple-Liebhaber:)
 

Anhänge

  • Bild.jpg
    Bild.jpg
    66,2 KB · Aufrufe: 340

Scotch

Bittenfelder Apfel
Registriert
02.12.08
Beiträge
8.058
Das Hello World, dass du programmiert hast, funktioniert unter Windows exakt so, wie unter OS X. Was also genau meinst du mit "...wie ich es unter Windows gewohnt bin"?

Gruss,
Dirk
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Die Binary suchen die Xcode erstellt hat, dort mit dem Terminal hin navigieren und dort ausführen.
 

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
Dein Hello-Word-Programm ist ein „eigenes Programm“. Es ist nur eben, genau wie ein entsprechendes Windows-Programm es auch wäre, ein CLI-Programm (Command Line Interface), kein Fensterprogramm. Und die Standardausgabe wird bei der Ausführung aus Xcode heraus eben in das entsprechende Panel der Xcode-GUI umgeleitet, statt dafür z.B. ein Terminal-Fenster zu öffnen – alles zu Deinem Komfort beim Debuggen.
 

Apple-Liebhaber

Allington Pepping
Registriert
04.09.10
Beiträge
194
@Scotch: Dass das Programm sich in einem eigenen Fenster ausgegeben wird, nicht einfach in der Entwicklungsumgebung angezeigt wird.

@ImperatoR: Ich habe ein neues Projekt mit dem Namen "HelloWorld" erstellt und der Ordner befindet sich auf meinem Schreibtisch. Wenn ich den Projektordner öffne, dann sehe ich folgende Ordnerstrucktur: "HelloWorld.xcodeproj und HelloWorld(Ordner)/HelloWorld(Ordner)/HelloWorld.1 und main.c

Was ist die Binary? Wie navigiere ich meinen Quelltext zum Terminal? Wie führe ich aus?

gKar: Wie erstelle ich ein "Fensterprogramm"?

Danke schonmal für die Antworten!
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
In Xcode in den Ordner Products und dann gibt es dort eine Binaryfile, die kannst du dir im Finder anzeigen lassen. Binary ist einfach das kompilierte und gebundene Programm — kauf dir am besten ein Buch.
 

Apple-Liebhaber

Allington Pepping
Registriert
04.09.10
Beiträge
194
Ach, diese Datei meinst du! Also: Rechtsklick auf die Binary --> "Show in Finder" --> auf die Datei klicken?

Edit: Im Terminal wurde mir "Hello World!" angezeigt. Meintest du das? So etwas ähnliches wollte ich haben. Gibt's noch eine andere Möglichkeit?
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Was willst du denn? Du kannst dir jetzt noch 10 CLI-Tools installieren und dir darauf "Hello world" mit diesem Programm ausgeben lassen.
 

Apple-Liebhaber

Allington Pepping
Registriert
04.09.10
Beiträge
194
Ich möchte: Xcode --> C Source schreiben --> kompilieren und ausführen (in Xcode) --> neues, EIGENES!!! Command Line Fenster öffnet sich --> Der Quellcode wird ausgeführt --> Programm läuft --> Benutzer zufrieden = gut :) Ich möchte es nicht im Terminal haben. Sorry, vielleicht habe ich mich etwas undeutlich ausgedrückt ^^
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
geht nicht. Unter Windows wird ja nur eine CLI lib mit reingehängt, die für das eigens Fenster sorgt. Unter unixoiden Systeme ist das nicht notwendig, da es eine bash gibt.
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Bei Xcode 3 konnte man noch ein extra Bash-Fenster öffnen lassen. Xcode 4 hat eine "Alles in einem Fenster" Philosophie. Aber ist das denn so schlimm?
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
nein, er meint, dass das compilierte Programm eine eigene Shell zur Verfügung stellt, wie unter Windows. Also über eine dynamische Bibliothek aufgerufene und im Programm integrierte
 

Scotch

Bittenfelder Apfel
Registriert
02.12.08
Beiträge
8.058
Unter Windows wird keine "CLI lib" oder "dynamische Bibiliothek" mit 'rein gehaengt. Was er meint, ist dass die Windows-Entwicklungsumgebung offensichtlich ein eigenes Terminalfenster oeffnet (Xcode 3.x macht das auch, VisualStudio bei mir dafuer nicht ;)), waehrend Xcode 4.x das offensichtlich auf Grund der neuen Benutzeroberflaeche nicht mehr macht, sondern die Ausgabe in einem Teil der Oberflaeche darstellt.

Da ich kein Xcode 4 benutze, kann ich's nicht ueberpruefen, aber vmtl. gibt es genau wie unter Xcode 3.x irgendwo eine Einstellung, mit der man genau dieses Verhalten steuern kann (ich hab' z.B. bei mir dieses Verhalten in Xcode 3 abgestellt, da mich das ewig aufgehende Terminalfenster nervt - bei mir ist das Fenster auch permanent auf dem Bildschirm, also quasi wie bei Xcode 4, nur leider nicht so schoen aufgeraeumt).

Ganz nebenbei: Bitte unterscheidet zwischen einem Terminalfenster (terminal, xterm, vterm, iterm...) und der shell, die darin laeuft. Bei mir startet Xcode z.B. keine bash, sondern eine tcsh ;)

Gruss,
Dirk
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
Unter Windows wird keine "CLI lib" oder "dynamische Bibiliothek" mit 'rein gehaengt.

Und warum ist das bei mir dann so?

EDIT: es handelt sich um die msvcrt.dll. Diese ist sozusagen die lib für die Standard C Bibliothek und bringt auch eine eigene Konsole mit sich.
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Ganz nebenbei: Bitte unterscheidet zwischen einem Terminalfenster (terminal, xterm, vterm, iterm...) und der shell, die darin laeuft. Bei mir startet Xcode z.B. keine bash, sondern eine tcsh ;)
Echt? Bei mir startet Xcode weder bash noch tcsh, sondern das compilierte Programm bzw. den Debugger und der das Programm. ;)

MacApple
 

Scotch

Bittenfelder Apfel
Registriert
02.12.08
Beiträge
8.058
EDIT: es handelt sich um die msvcrt.dll. Diese ist sozusagen die lib für die Standard C Bibliothek und bringt auch eine eigene Konsole mit sich.

Nun ja, da weiss man ja gar nicht so recht, was man dazu sagen soll. Preisfrage: Wenn man ein mit msvcrt.dll gelinktes CLI-Programm aus der Kommandozeile startet, öffnet sich dann ein neues Fenster? ;)

Echt? Bei mir startet Xcode weder bash noch tcsh, sondern das compilierte Programm bzw. den Debugger und der das Programm. ;)

Har har har ;)

Gruss,
Dirk
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
Nun ja, da weiss man ja gar nicht so recht, was man dazu sagen soll. Preisfrage: Wenn man ein mit msvcrt.dll gelinktes CLI-Programm aus der Kommandozeile startet, öffnet sich dann ein neues Fenster? ;)

Wenn man Unix denken so einfach auf Windows übertragen könnte ;) Unter Unix würde sich ein Kommandozeilenprogramm starten, dadrin vermutlich eine bash und dann das binary, was man öffnen wollte, heißt: Man öffnet beispielsweise mit dem Terminal ein CLI Programm. Heißt: die bash forkt einen Prozess und wird deren Eigentüme Terminal => bash tot => Prozess tot, also man hat gleich 3 Prozesse gestartet.

Unter Windows kannst du eine cmd starten und dadrin das binary, hier haste aber keine bash, sondern das CMD als direktes CLI Programm (nur 2 Prozesse). Wenn man aber die exe direkt ausführt, öffnet sich nichtmal eine cmd.exe sondern das Programm selbst (1 Prozess), bedeutet, das Programm öffnet sich selbst ein CLI Fenster. Also, wenn ein Programm kein CLI Fenster hat, kann es sich selbst eine öffnen.
 

asyx

Idared
Registriert
05.11.10
Beiträge
24
Ich glaube, dass er einfach nur den Terminal selbst wieder schließen will, wenn er sein Programm startet (Also Doppelklick auf die Binary). Ich glaube, das geht nicht. Was aber gut ist... Könnt mich immer aufregen wenn Fehlermeldungen oder so in der cmd.exe einfach wieder zu gehen...