为什么-o是从Microsoft编译器和链接器中删除的候选者?
发布时间:2020-12-14 01:50:23 所属栏目:Windows 来源:网络整理
导读:我遇到了以下内容,我想知道它对我的cygwin / gnu环境有什么影响我应该使用除-o以外的东西来命名编译的输出吗?是否采用了一些新标准并且其他编译器是否遵守它? 删除-o的动机是什么? DOS PROMPT键入compile.bat cl.exe -D YY_MAIN = 1 lex.yy.c libfl.obj -
我遇到了以下内容,我想知道它对我的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 – 或者更好的是,实际的跨平台构建系统,如CMake或SCons(请注意,它们只是示例,我不是嫁给他们中的任何一个:)). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |