2013-11-26 11 views
7

Ich versuche, Keilschrift unter Windows zu erstellen. Ich benutze CMake um den Build zu generieren und wähle die MinGW Makefiles Option.MinGW versucht cmd.exe von CMake Makefiles zu verwenden

Intern haben die Makefiles DOS C: \ Pfadnamen Stil Pfade statt Unix-Stil und SHELL ist auf cmd.exe gesetzt (ich merke, dass MinGW bin Verzeichnis verfügt über ein Cmd-Skript aber keine cmd.exe) statt bash oder sh.

Ich starte Bash durch Doppelklick auf C:\MinGWzmsys\1.0\bin\bash.exe. Wenn ich versuche, führen Sie dann machen es sagt:

bash.exe"-3.1$ cd /c/cuneiform/build/ 
bash.exe"-3.1$ make 
Microsoft Windows [Version 6.1.7601] 
Copyright (c) 2009 Microsoft Corporation. All rights reserved. 
c:\cuneiform\build> 

Ich muss dann die Ausfahrt dreimal geben zurück in bash zu bekommen! Warum?

Ich habe versucht, Makefiles zu generieren, die Unix-Stilpfade verwenden und sh anrufen, aber CMake kann das aus irgendeinem Grund nicht tun.

Idealerweise sollte ich das aus Bash oder DOS versuchen? Wenn ich von DOS aus versuche (nachdem ich einen minimalen Pfad auf Pfad = C: \ MinGW \ msys \ 1.0 \ bin; C: \ Windows \ System32 eingestellt habe), mache dies auf ähnliche Weise.

Normalerweise schreibe ich C++ unter HP-UX oder Java unter Windows, also MinGW und CMake sind alle neu für mich, wie Sie sicher sagen können.

+4

'cmake ... -G" MSYS Makefiles "...' + 'make' oder' cmake ... -G "MinGW Makefiles" ... '+' mingw32-make'. –

Antwort

7

Nach cmake doc, auf Windows, MinGW Makefiles sollte, wenn verwendet werden, die Schale cmd.exe und MSYS Makefiles ist, wenn die Schale sh.exe ist.

Probieren Sie cmake -G "MinGW Makefiles" wenn innerhalb einer Bash-Shell geben Sie einen Fehler, so sollten Sie mit Ihrer Umgebung konsistent sein. Wenn Sie keine Unix-Tools benötigen, um Ihr Projekt zu erstellen (grep, sed, etc.), müssen Sie bash nicht wirklich ausführen.

In meinen Erfahrungen habe ich festgestellt, dass TDM GCC Suite besser funktioniert, wenn Sie nicht in der Unix-Umgebung und Tools interessiert sind und nur den Compiler benötigen.