Problem mit nmake

Asseon

Draic Kin
Registriert
14 Juli 2013
Beiträge
685
Ort
Arcadia
Ich habe in "kleines" Problem mit dem windows Build tool nmake.

Ich möchte es benutzen um eine PyQt Anwendung mithilfe von pyqtdeploy in ein statisches Binary zu compilieren, das makefile wird mit qmake generiert und als Compiler kommt mingw zum Einsatz.

allerdings scheint nmake die Argumente nicht korrekt zu übergeben, denn es bricht jedes mal mit folgendem oder einem vergleichbarem Fehler ab
$ nmake

Microsoft (R) Program Maintenance Utility, Version 12.00.21005.1
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

"c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\nmake.exe" -f Makefile.Release

Microsoft (R) Program Maintenance Utility, Version 12.00.21005.1
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

g++ -c -pipe -fno-keep-inline-dllexport -O2 -w -frtti -fexceptions -mthreads -DUNICODE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I. -I'C:/Python34/include' -I'../../../Downloads/Python-3.4.2/Modules' -I'C:/Qt/5.3/mingw482_32/include' -I'C:/Qt/5.3/mingw482_32/include/QtWidgets' -I'C:/Qt/5.3/mingw482_32/include/QtGui' -I'C:/Qt/5.3/mingw482_32/include/QtCore' -I'release' -I'C:/Qt/5.3/mingw482_32/mkspecs/win32-g++' -o release/pyqtdeploy_main.o pyqtdeploy_main.cpp
pyqtdeploy_main.cpp:1:20: fatal error: Python.h: No such file or directory
#include <Python.h>
^
compilation terminated.
NMAKE : fatal error U1077: "c:\MinGW\bin\g++.EXE": Rückgabe-Code "0x1"
Stop.
NMAKE : fatal error U1077: ""c:\Program Files (x86)\Microsoft Visual Studio 12.0
\VC\bin\nmake.exe"": Rückgabe-Code "0x2"
Stop.

Führe ich das Kommando allerdings manuell aus läuft es problemlos durch.

Irgendwelche Ideen woran das liegen könnte?

glaub nicht, dass das relevant ist, aber Windows läuft in einer VM
 
Liegt denn Python.h im Pfad? Ansonsten übergib doch den Pfad zu Python.h noch einmal explizit.
 
  • Thread Starter Thread Starter
  • #3
Wie ich bereits sagte, dass Kommando ist korrekt, wenn ich es raus kopiere und direkt eingebe gibt es keine Probleme.

Ich gehe auch davon aus, dass das gesamte makefile korrekt ist, denn alle Kommandos die ich probierte liefen bei direkter Eingabe ohne Fehlermeldung durch.
 
Evtl. Liegt eine andere python.h in einem Pfad der in der Pate variable steht. Bzw. Je nachdem wie nmake arbeitet könntest du dich in einem anderen Pfad befinden als bei direkter Eingabe.
Wenn kein Pfad vom Programm Festgeld wird befindet man sich bei Windows erst mal in %windir%\System32 was. Insoweit dein Programm ein 32bit Programm ist und du ein 64bit os verwendest intern auf syswow64 umgebogen wird.

Kannst du im makefile evtl eine Umgebungs variable setzen oder das currentdir?
 
  • Thread Starter Thread Starter
  • #5
Laut suche ist die "Python.h" nur in zwei Ordnern vorhanden einmal in "C:\Python34\include" und in "C:\Users\pydep\Downloads\Python-3.4.2\Include" ersteres Pfad wird als include pfad angegeben.

das currentdir explizit zu setzen würde imho nicht viel sinn machen, weil das Makefile damit hochgradig Systemspezifisch werden würde.
Aber es scheint eh auf "c:\Users\pydep\python\picup\build" gesetzt zu sein, was korrekt ist.
 
Ich nutze nmake nicht in Verbindung mit MinGW oder MSYS, ein mögliches Problem ist jedoch die Verwendung von Apostrophen (') statt Anführungszeichen (") als Argumentbegrenzer. Während dies jede Unix-artige Shell (insbesondere auch die in MSYS integrierte bash) akzeptiert, tut es die Windows-Shell nicht. Zum Beispiel:
Code:
Expand Collapse Copy
C:\> cd "foo bar"
C:\foo bar> cd ..
C:\> cd 'foo bar'
Das System kann den angegebenen Pfad nicht finden.

user@host:~ $ cd "foo bar"
user@host:~/foo bar $ cd ..
user@host:~ $ cd 'foo bar'
user@host:~/foo bar $

Spricht etwas dagegen, GNU Make und MSYS zu verwenden, wenn du ohnehin bereits MinGW einsetzt?
 
  • Thread Starter Thread Starter
  • #7
Also habs nun mal mit GNU Make getestet, hatte MSYS eh bereits für git drauf, allerdings zeichnete sich die make Version aus dem MSYSgit snapshot vom 29.09.14 vor allem durch konsequentes nichts tun aus, erst nach einem update mit dem netinstaller lief es dann, interessanter weise läuft mit der aktualisierten MSYS Umgebung auch nmake, welches ich btw nur benutzte weil pqtdeploy dies tut.

Also das ursprüngliche Problem ist gelöst, das neue ist ein Problem beim finalen linken, sollte ich das nicht selber lösen können, werde ich dafür aber einen neuen Thread eröffnen, es sei dann man sagt mir jetzt "hau rein die scheiße", da das nichts mehr mit nmake zu tun hat. ^^


Daher einmal danke an alle die mir geholfen oder es zumindest versucht haben :)
 
Zurück
Oben