加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

为什么-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(请注意,它们只是示例,我不是嫁给他们中的任何一个:)).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读