Как мне остановить MSYS от преобразования параметров моего компилятора?

908
Carl Norum

Есть ли способ остановить MSYS / MinGW от преобразования того, что он считает путями в моей командной строке? У меня есть проект, который использует nmake& Microsoft Visual Studio 2003 (yeecccch). У меня есть система сборки, все перенесено и готово к работе с GNU make(и протестировано с Cygwin). Что-то странное происходит с флагами моего компилятора, когда я пытаюсь скомпилировать в среде MSYS. Вот упрощенный пример:

$ 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' 

Как видите, MSYS преобразует /nologoпереключатель компилятора в путь Windows, а затем отправляет его компилятору. Я действительно не хочу, чтобы это произошло - на самом деле я был бы рад, если бы MSYS никогда не менял пути - моя система сборки должна была позаботиться обо всем этом, когда я впервые портировал на Cygwin. Есть ли способ сделать это?

Это работает, чтобы изменить команду

$ cl -nologo 

Который дает ожидаемые результаты, но эта система сборки очень большая и очень болезненная для обновления. Я действительно не хочу идти и менять каждое использование a /для флага на a -. В частности, могут быть инструменты, которые вообще не поддерживают использование -, и тогда я действительно застряну.

Спасибо за любые предложения!

0
Публикация на суперпользователе, поскольку тот факт, что это компилятор, на самом деле не проблема, это общая проблема MSYS против нативного приложения. Carl Norum 14 лет назад 2

2 ответа на вопрос

2
actf

Я нашел этот вопрос, когда искал способ запустить программу Windows, которая требует аргумента в форме:

/arg:<path> 

где путь должен быть полностью определенным путем Windows

Я просто хотел уточнить следующее из исходного вопроса:

Это работает, чтобы изменить команду

cl -nologo 

Который дает ожидаемые результаты .... В частности, могут быть инструменты, которые вообще не поддерживают использование - и тогда я действительно застряну.

Как следует из оригинального плаката, преобразование аргумента с использованием - следующим образом работает отлично:

-arg:<path> 

Я был действительно удивлен этим, поскольку это не задокументировано помощью программы. Так получилось, что программа в этом случае также сделана Microsoft (как и nmake в случае оригинального плаката). Поэтому, если программа, которую вы пытаетесь запустить, сделана Microsoft, сделайте это, даже если она не имеет документов.

Надеюсь, что нет программ, которые используют эту (imho insane) форму аргументов командной строки вне Microsoft, если таковые имеются, я не думаю, что их можно запускать с MSYS.

0
Carl Norum

Окончательный ответ заключается в том, что нет никакого способа остановить это поведение. Мне пришлось пройти каждую строку в системе сборки и изменить каждую /в -.

Бу! Hiss! Вы можете попробовать отправить сообщение в список рассылки (https://lists.sourceforge.net/lists/listinfo/mingw-users), чтобы запросить исправление ошибки. Synetech 13 лет назад 0

Похожие вопросы