Was entspricht der gcc-Option -mwindows in cmake?

8

Ich folge dem Tuto:

Ссылка

Es funktioniert, aber jedes Mal, wenn ich auf die ausführbare Datei doppelklicke, gibt es eine Konsole, die ich nicht dort haben will.

Wie werde ich diese Konsole los?

Ich habe es versucht:

%Vor%

Aber ich habe diesen fatalen Fehler:

%Vor%

Während gcc direkt funktioniert:

%Vor%

Ich vermute, es hat etwas mit der Eingangsfunktion zu tun: int main( int argc, char *argv[]) , aber warum gcc funktioniert?

Wie kann ich mit cmake arbeiten?

AKTUALISIEREN

Lassen Sie mich hier den Quellcode einfügen:

%Vor%

UPDATE2

Warum gcc -mwindows funktioniert, aber add_executable(Cmd WIN32 cmd.c) nicht?

Vielleicht ist das nicht gleichbedeutend mit -mwindows in cmake?

    
Gtker 02.05.2010, 07:44
quelle

4 Antworten

4

add_executable (Cmd WIN32 cmd.c)

Sagt CMake Dies ist ein Windows-Programm, und es sucht nach WinMain statt Main. Wenn Sie die verwendeten Flags sehen möchten, können Sie make VERBOSE = 1 ausführen. Die Frage könnte sein, wie definieren Sie WinMain für GTK-Anwendungen? Ich weiß mit Qt, dass Sie in einer Bibliothek verlinken, die es für Sie definiert.

    
Bill Hoffman 02.05.2010 13:39
quelle
2

Wenn Sie möchten, dass Ihr Programm im Konsolenmodus ausgeführt wird (z. B. eine main -Funktion), müssen Sie es in den Projekteigenschaften in MSVC angeben. Was Sie gerade verwenden, ist ein Projekt im Fenstermodus (dh eine WinMain -Funktion, die Sie nicht haben, daher der Fehler).

Aber wenn Sie das hässliche Konsolenfenster nicht sehen wollen, wollen Sie den gefensterten Modus verwenden (zB transformieren Sie Ihre main -Funktion in eine propper WinMain -Funktion). Auf diese Weise wird nur das normale Fenster angezeigt.

edit: Nebenbei sollten Sie Ihr Programm "cmd", das ist der Name des Windows-Befehlsinterpreters, wirklich nicht nennen.

    
Blindy 02.05.2010 08:01
quelle
2

Sie können diese Linker-Flags so einstellen, dass sie einen main() -Eintrittspunkt und keine Konsole haben:

%Vor%

Weitere Informationen finden Sie unter diese Antwort für die Linker-Flags und diese Antwort zum Festlegen von Flags in cmake .

    
Matt Eckert 27.04.2014 05:59
quelle
1

Laut der CMake-Dokumentation zur Verwendung des WIN32-Flags mit ADD_EXECUTABLE :

  

Wenn diese Eigenschaft auf "true" gesetzt ist, wird die ausführbare Datei, wenn sie unter Windows verknüpft ist, mit einem WinMain () - Einstiegspunkt anstelle von nur main () erstellt. Dies macht sie zu einer ausführbaren GUI anstelle einer Konsolenanwendung. Informationen zum Konfigurieren der Verwendung von MFC für ausführbare Dateien von WinMain finden Sie in der CMAKE_MFC_FLAG-Variablendokumentation.

Der Einstiegspunkt Ihres Programms ist jedoch main() und nicht WinMain() . Was Sie stattdessen tun sollten, ist das WIN32-Flag weglassen, aber Sie müssen mit libgtk verknüpfen. Also würden Sie TARGET_LINK_LIBRARIES verwenden:

%Vor%     
Michael Aaron Safyan 02.05.2010 08:06
quelle

Tags und Links