Есть ли способ остановить 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

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

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

2 ответа2

2

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

/arg:<path>

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

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

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

cl -nologo

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

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

-arg:<path>

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

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .