【问题标题】:Disable only warning D9024 (unrecognised file type; object file assumed)仅禁用警告 D9024(无法识别的文件类型;假定为目标文件)
【发布时间】:2020-03-08 23:16:40
【问题描述】:

我有一个与操作系统无关的 makefile(呃,我知道),它支持 GNU 和 MSVC 编译器(以及其他)。它总是在编译时生成 .o 目标文件,即使在为 MSVC 编译时(它需要 .obj 文件)。这不是一个大问题; cl 发出警告

cl : Command line warning D9024 : unrecognized source file type '.o', object file assumed

继续,编译成功。

我想删除这个难看的命令行警告,只有这个警告,但我想不出任何办法来做到这一点。

IGNORE 之类的参数似乎并没有抑制它,例如使用

cl -IGNORE:D9024 ...

以及抑制代码内生成警告的技术(如this one)不适用于此命令行警告。

有没有办法抑制D9024?

否则(并且最好),有没有办法告诉 MSVC 提供的 .o 文件是目标文件,所以它不需要这样假设?

【问题讨论】:

  • 所以它检测到.o不是一个源文件并处理它。不得不佩服古人的智慧。
  • 如果您还提供带有 /c 选项的 cl.exe,则不应向其发送目标文件。为什么它认为应该获取源文件时却接收到目标文件?
  • @0-0 我不这样做... 将我的.o 文件与cl 链接时发生错误,没有/c 标志
  • @HansPassant 我不明白,这发生在链接时(没有传递源文件),如果目标文件被命名为.obj,则不会出现此警告

标签: c++ visual-c++ suppress-warnings


【解决方案1】:

通过不执行与cl 的链接而简化,而是显式调用MSVC 的link

【讨论】:

  • 是否有一个指向CL 的标志来转储由CL 编译器驱动程序(D9024 中的D)产生的链接器调用?这将简化用LINK 替换CL
猜你喜欢
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多