Como faço para impedir que o MSYS transforme minhas opções de compilador?

0

Existe uma maneira de impedir que o MSYS / MinGW transforme o que ele acha que são caminhos nas minhas linhas de comando? Eu tenho um projeto que está usando nmake & Microsoft Visual Studio 2003 (yeecccch). Eu tenho o sistema de compilação todo portado e pronto para ir para o GNU make (e testado com o Cygwin). Algo estranho está acontecendo com meus flags do compilador quando tento compilar em um ambiente MSYS, no entanto. Aqui está um exemplo simplificado:

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

Como você pode ver, o MSYS está transformando o comutador do compilador /nologo em um caminho do Windows e enviando-o para o compilador. Eu realmente não quero que isso aconteça - na verdade, eu ficaria feliz se o MSYS nunca transformasse nenhum caminho - meu sistema de compilação teve que cuidar de tudo isso quando eu naveguei para o Cygwin pela primeira vez. Existe uma maneira de fazer isso acontecer?

Funciona para mudar o comando para

$ cl -nologo

Que produz os resultados esperados, mas esse sistema de compilação é muito grande e muito doloroso de atualizar. Eu realmente não quero ter que ir e alterar cada uso de um / para um sinalizador para um - . Em particular, pode haver ferramentas que não suportam o uso do - , e então eu realmente vou ficar preso.

Obrigado por qualquer sugestão!

    
por Carl Norum 12.03.2010 / 07:05

2 respostas

0

A resposta final é que, de fato, não há como impedir esse comportamento. Eu tive que passar por todas as linhas no sistema de compilação e alterar cada / em - .

    
por 21.02.2011 / 19:22
2

Encontrei esta questão enquanto procurava uma forma de executar um programa do Windows que requer um argumento no formulário:

/arg:<path>

em que caminho deve ser um caminho completo do Windows

Eu só queria explicar o seguinte da pergunta original:

It does work to change the command to

cl -nologo

Which produces the expected results .... In particular, there may be tools that don't support the use of the - at all, and then I'll really be stuck.

Como o pôster original sugere, transformar o argumento usando - da seguinte maneira, funciona perfeitamente:

-arg:<path>

Eu realmente fiquei realmente surpreso com isso, já que isso não está documentado pela ajuda do programa. Acontece que o programa, neste caso, também é feito pela Microsoft (como é o caso no caso do pôster original). Então, se o programa que você está tentando executar for feito pela Microsoft, dê uma chance a ele, mesmo que não esteja documentado.

Espero que não existam programas lá fora que usem essa forma (imano insana) de argumentos de linha de comando fora da Microsoft, se houver, eu não acho que é possível executá-los com MSYS

    
por 10.01.2012 / 00:34