相关疑难解决方法(0)

从命令行(对于makefile)查找Microsoft C++编译器的版本

我必须遗漏一些非常明显的东西,但出于某种原因,Microsoft C++编译器(cl.exe)的命令行版本似乎不支持在运行时报告其版本.我们需要这个来编写makefile,检查我们工具的用户已经安装的编译器版本(他们使用代码获取makefile,他们将在本地编译,因此我们无法控制他们的编译器版本).

在gcc中,你只需要选择-v或--version来打印一个漂亮的版本字符串.

在cl.exe中,-v会出错.

我已经阅读了MSDN文档和编译器在线帮助,我找不到只打印编译器版本的开关.令人讨厌的是,你总是在编译器启动时得到版本......但你似乎无法启动编译器只是为了从中获取版本.

使用qmake查找编译器供应商/版本似乎相似,但只处理gcc的简单情况.

我正在尝试使用VC++ Express 2005,如果这很重要的话.我希望它不会,因为检测编译器版本最好以与编译器版本无关的方式完成:)

回复后更新:

  • 运行不带任何参数的cl.exe会打印其版本和一些帮助文本.
  • 这看起来是跨越vc版本获得该版本的最便携方式.
  • 然后你必须解析多行输出,但这并不太难.
  • 我们最终做到了这一点,并且它有效.

makefile visual-c++

49
推荐指数
4
解决办法
9万
查看次数

在预处理器中检测ARM-64?

据微软(此处此处)称,该公司将在即将推出的Windows 10版本中支持ARMv8/Aarch64(ARM-64).此外,微软已经提供了预览,因此我猜测工具支持已到位.

对于那些不知道的人,文章提供图像清楚地显示了Qualcomm Snapdragon 410.这是一个A-53核心,它的Aarch64/ARM-64.

Microsoft定义_M_ARM了ARM-32,我们目前使用它来检测NEON可用性.ARMv8支持可选扩展CRC32,AES,SHA-1和SHA-2.我们已经为Apple和Linux编写了代码,我们希望为Microsoft平台启用它.

微软也有__M_ARM_FP,但不清楚用它来检测ARM64.我也不清楚x86的相关性:

扩展为整数字面值,指示使用了哪个/ arch编译器选项:

  • 如果未指定/ arch ARM选项,则在30-39范围内,表示使用了ARM的默认体系结构(VFPv3).
  • 如果使用/ arch:VFPv4,则在40-49范围内.
  • 有关更多信息,请参见/ arch(x86).

我对我可用的Microsoft编译器进行了一些快速测试(所有这些都可以追溯到VC++ 5.0).他们没有消耗ARMv8内在函数,这并不奇怪.我猜我需要一个MSDN订阅来测试最新的工具,但我不再订阅了.

我的问题是:

  • 我们如何在预处理器中检测ARMv8/Aarch64(_M_ARM64?)
  • 什么版本的compiler(_MSC_VER)支持ARMv8指令

这可能是相关的:什么是WINAPI_FAMILY_ONECORE_APP?

macros 64-bit arm visual-studio c-preprocessor

1
推荐指数
1
解决办法
2504
查看次数