为什么-o是从Microsoft编译器和链接器中删除的候选者?

前端之家收集整理的这篇文章主要介绍了为什么-o是从Microsoft编译器和链接器中删除的候选者?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了以下内容,我想知道它对我的cygwin / gnu环境有什么影响我应该使用除-o以外的东西来命名编译的输出吗?是否采用了一些新标准并且其他编译器是否遵守它?

删除-o的动机是什么?

DOS PROMPT>键入compile.bat

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

DOS PROMPT>编译

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

cl:命令行警告D9035:已弃用选项“o”,将来的版本中将删除该选项

更新:正如下面的答案要求他们是否试图在Windows和UNIX之间故意制造更多的裂痕?我希望不是.我希望我错过了所有编译器采用的新约定.

我不一定会看到背后的邪恶目的 – 它更可能是与兼容性相关的东西(可能是-o干扰某些构建系统或某些大型Microsoft客户或其他人使用的其他构建系统.)

然而,当编译器供应商抛弃根深蒂固的做法和学习反应时,这很令人讨厌.

但是,微软编译器和Unix编译器之间的(语法和哲学)差异比简单的命令行开关更大.为此,您可以尝试从简单的批量构建脚本转向Makefile – 或者更好的是,实际的跨平台构建系统,如CMakeSCons(请注意,它们只是示例,我不是嫁给他们中的任何一个:)).

猜你在找的Windows相关文章