Почему-o является кандидатом на удаление из компилятора Microsoft и компоновщика?

Я столкнулся со следующим, и я задаюсь вопросом, какие последствия это будет иметь на моей среде Cygwin/GNU. Если я использую что-то другое, чем -o назвать вывод от компиляции?

Был некоторый новый принятый стандарт, и другие компиляторы придерживаются его?

Какова была бы мотивация для удаления -o?

КОМАНДНАЯ СТРОКА DOS> вводит compile.bat

cl.exe -D YY_MAIN=1 lex.yy.c libfl.obj -o foobar

КОМАНДНАЯ СТРОКА DOS> компиляция

cl.exe -D YY_MAIN=1 lex.yy.c libfl.obj -o foobar
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.
lex.yy.c
Microsoft (R) Incremental Linker Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.
/out:lex.yy.exe
/out:foobar.exe
lex.yy.obj
libfl.obj

статья: Командная строка, предупреждающая D9035: опция 'o' была удержана от использования и будет удалена в будущем выпуске


Как ответ ниже просит, они пытаются сделать больше отчуждения между Windows и UNIX намеренно?Надеюсь, что нет. Я надеюсь, что пропускаю некоторую новую конвенцию, принятую всеми компиляторами там.

7
задан Peter Mortensen 2 September 2019 в 11:37
поделиться

3 ответа

Я не обязательно видел бы низкую цель позади того - это, более вероятно, будет некоторая связанная с совместимостью вещь (возможно-o, вмешивается в некоторую систему сборки или другой используемый некоторым крупным клиентом Microsoft или другим.)

Однако это является раздражающим, когда поставщик компилятора выбрасывает укрепленные методы и изученные отражения.

Но (синтаксический и философский) различия между компиляторами Microsoft и компиляторами Unix больше, чем простой переключатель командной строки. С этой целью Вы могли попытаться ступить далеко от простых пакетных сценариев сборки и к Make-файлам - или, еще лучше, фактическая межплатформенная система сборки, таким как CMake или SCons (обратите внимание на то, что, они - просто примеры, я не женат ни на одном из них :)).

2
ответ дан 7 December 2019 в 01:26
поделиться

Да. Необходимо использовать/F для установки опций выхода компилятора.

4
ответ дан 7 December 2019 в 01:26
поделиться

Параметры командной строки в Windows отличаются, чем параметры командной строки на Unix. Они обычно запускают с / вместо - и аргументы cl.exe будет не обязательно соответствовать тем cc на Unix.

Похож на опцию, которую Вы ищете, /Fe

4
ответ дан 7 December 2019 в 01:26
поделиться