【问题标题】:How to find MS C/C++ compilers in Appveyor如何在 Appveyor 中找到 MS C/C++ 编译器
【发布时间】:2017-03-17 11:05:19
【问题描述】:

我需要为我的项目的构建测试找到 Microsoft 的编译器 cl.exe,但在 Visual Studio 15 映像中似乎找不到它。我查看了许多 github 托管的 appveyor.yml 文件以寻找灵感(例如 https://github.com/frankmorgner/openpace/blob/master/appveyor.yml ),但没有什么对我有用。我可以看到 llvm 编译器,但我真的想要微软的。在 Appveyor 中获取 Microsoft C 编译器的最终方法是什么?

【问题讨论】:

    标签: appveyor


    【解决方案1】:

    如果您在任何脚本阶段(比如install 阶段)添加类似的内容,您会看到一大堆这些文件 cd c:\ dir /s cl.exe

    这是我输出的一小部分: Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin 08/25/2016 11:13 PM 190,600 cl.exe 1 File(s) 190,600 bytes Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64 08/25/2016 11:06 PM 229,000 cl.exe 1 File(s) 229,000 bytes Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64_arm 08/25/2016 11:06 PM 225,568 cl.exe 1 File(s) 225,568 bytes Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64_x86 08/25/2016 11:06 PM 229,664 cl.exe 1 File(s) 229,664 bytes Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64 08/25/2016 11:13 PM 190,752 cl.exe 1 File(s) 190,752 bytes Directory of C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_arm

    调查 AppVeyor VM 的另一个选项(如果您找不到答案 here)是 RDP

    【讨论】:

      【解决方案2】:

      我这样做的方法是运行vcvarsall.bat
      这是将正确的编译器添加到路径的最可靠方法。 (我也使用它来设置适当的环境以使用 clang-cl 进行编译。)

      AppVeyor.yml 示例:

      image:
      - Visual Studio 2015
      - Visual Studio 2017
      
      platform:
      - x86
      - x64
      
      environment:
          VCVAR2015: 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat'
          VCVAR2017: 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat'
      
      before_build:
      - ps: |
          # ...example script to set the proper flags for vcvarsall ...
          # syntax: vcvarsall.bat [architecture] [platform_type] [winsdk_version] [-vcvars_ver=vcversion]
          $Architecture = $env:PLATFORM # simplified, works for x86 and x64
          if ("$env:APPVEYOR_BUILD_WORKER_IMAGE" -eq "Visual Studio 2015") {
            $env:VCVARSALL = "`"$env:VCVAR2015`" $Architecture"
          } else {
            $env:VCVARSALL = "`"$env:VCVAR2017`" $Architecture"
          }
      - call %VCVARSALL%
      
      build_script:
      - cl
      - link
      

      也可以调用特定版本,例如 vcvarsamd64_x86.bat,但我更喜欢在脚本中设置标志。

      【讨论】:

        猜你喜欢
        • 2016-08-27
        • 1970-01-01
        • 1970-01-01
        • 2011-10-01
        • 2015-05-08
        • 2014-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多