【问题标题】:How can I determine which version of MacOS I'm compiling on?如何确定正在编译的 MacOS 版本?
【发布时间】:2012-03-12 15:01:15
【问题描述】:

我正在有条件地编译:

#ifdef WIN32
  myVal = "Windows";
#elif __APPLE__
  myVal = "Apple";
#endif

我可以在 __APPLE__ 块中测试一个值来测试不同版本(10.4、10.5、10.6 等)吗?

【问题讨论】:

    标签: c++ macos compilation cross-platform


    【解决方案1】:

    如果您要检查编译器的环境,请尝试uname -v

    具体来说,我认为您可以通过uname -v | sed 's/Darwin Kernel Version \([^ ]*\):.*/\1/' 获取,例如“10.5”。

    【讨论】:

      【解决方案2】:

      您应该使用/usr/include/AvailabilityMacros.h 宏。请参阅TN2064 进行讨论,以及此文件中的标头 cmets。

      【讨论】:

      • 这看起来不像我想要的,这些是开发者设置的,我想知道它运行的机器的操作系统。
      • 但是@Tom,你的问题展示了检测 你的编译器 正在运行的机器的操作系统。您正在检查编译时宏。如果您想要运行时操作系统版本,那么您需要编写将在运行时评估的代码,因此#ifdef 完全不在讨论范围内。所以,请澄清您的问题:您要检查编译器的环境还是程序的环境?
      • 编译器的,很抱歉造成混乱。
      • 因此,这为您提供了开发人员在正在编译的机器上请求的内容。这不是你想要的吗?如果开发人员请求不同的 SDK,那么询问实际的机器操作系统并不是很有用。
      猜你喜欢
      • 2020-07-23
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 2021-10-26
      相关资源
      最近更新 更多