Wie verhindere ich, dass MSYS meine Compileroptionen umwandelt?

1129
Carl Norum

Gibt es eine Möglichkeit, MSYS / MinGW daran zu hindern, die Pfade in meinen Befehlszeilen zu transformieren? Ich habe ein Projekt, das nmake& Visual Studio 2003 (yeecccch) verwendet. Ich habe das Build-System alles portiert und bereit für GNU make(und mit Cygwin getestet). Wenn ich versuche, in einer MSYS-Umgebung zu kompilieren, geschieht etwas Merkwürdiges mit meinen Compiler-Flags. Hier ist ein vereinfachtes Beispiel:

$ cl /nologo Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.6030 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved.  /out:nologo.exe C:/msys/1.0/nologo LINK : fatal error LNK1181: cannot open input file 'C:/msys/1.0/nologo.obj' 

Wie Sie sehen, wandelt MSYS den /nologoCompiler-Switch in einen Windows-Pfad um und sendet diesen an den Compiler. Ich möchte wirklich nicht, dass dies geschieht. Tatsächlich wäre ich froh, wenn MSYS keine Pfade ändern würde. Mein Build-System musste sich darum kümmern, als ich zum ersten Mal zu Cygwin portierte. Gibt es eine Möglichkeit, dies zu erreichen?

Es funktioniert, um den Befehl zu ändern

$ cl -nologo 

Was zu den erwarteten Ergebnissen führt, aber dieses Build-System ist sehr umfangreich und für das Update sehr schmerzhaft. Ich möchte nicht wirklich gehen und jede Verwendung einer /für eine Flagge in eine ändern -. Es kann vor allem Tools geben, die die Verwendung des Tools überhaupt nicht unterstützen -, und dann werde ich wirklich stecken bleiben.

Danke für Anregungen!

0
Posting bei Superuser, da die Tatsache, dass es sich um einen Compiler handelt, nicht wirklich das Problem ist, es ist ein generelles MSYS-Problem in Bezug auf native Anwendungen. Carl Norum vor 14 Jahren 2

2 Antworten auf die Frage

2
actf

Ich habe diese Frage gefunden, als ich nach einem Weg gesucht habe, ein Windows-Programm auszuführen, das ein Argument im Formular erfordert:

/arg:<path> 

Dabei muss path ein vollständig qualifizierter Windows-Pfad sein

Ich wollte nur auf die ursprüngliche Frage eingehen:

Es funktioniert, um den Befehl zu ändern

cl -nologo 

Was zu den erwarteten Ergebnissen führt .... Insbesondere gibt es Tools, die die Verwendung der - überhaupt nicht unterstützen - und dann werde ich wirklich stecken bleiben.

Wie das Originalposter suggeriert, funktioniert die Transformation des Arguments mit - wie folgt - perfekt:

-arg:<path> 

Ich war wirklich wirklich überrascht, da dies nicht durch die Hilfe des Programms dokumentiert wird. Es ist nur so, dass das Programm in diesem Fall auch von Microsoft erstellt wurde (wie im Fall des Originalposters). Wenn also das Programm, das Sie ausführen möchten, von Microsoft erstellt wurde, versuchen Sie es, auch wenn es undokumentiert ist.

Hoffentlich gibt es keine Programme, die diese (imho wahnsinnige) Form von Befehlszeilenargumenten außerhalb von Microsoft verwenden. Wenn dies der Fall ist, glaube ich nicht, dass sie mit MSYS ausgeführt werden können

0
Carl Norum

Die endgültige Antwort ist, dass es keine Möglichkeit gibt, dieses Verhalten zu stoppen. Ich musste jede Zeile im Buildsystem durchgehen und jede /in eine -.

Boo! Zischen! Sie können versuchen, in die Mailing-Liste (https://lists.sourceforge.net/lists/listinfo/mingw-users) zu schreiben, um einen Bug-Fix anzufordern. Synetech vor 13 Jahren 0