You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline iOS构建中$(EFFECTIVE_PLATFORM_NAME)无法展开问题求助

问题根因

${EFFECTIVE_PLATFORM_NAME}是Xcode的内置构建变量,用来区分iOS构建目标是真机还是模拟器。CMake生成CTest配置时,将该变量直接写入了测试可执行文件的查找路径中,但Azure Pipeline的普通命令行执行环境默认没有导入该Xcode变量,导致路径拼接错误,无法找到测试包。

解决方案

以下方案按实现成本从低到高排序,可按需选择:

  • 方案1:执行CTest前手动注入变量
    你当前构建的是iOS x86_64模拟器版本,对应${EFFECTIVE_PLATFORM_NAME}的值为-iphonesimulator,直接修改yml的脚本段,执行CTest前先导出变量即可:
    steps:
    - task: CmdLine@2
      displayName: 'Run tests ${{parameters.platform}}-$(Configuration)'
      inputs:
        script: |
          export EFFECTIVE_PLATFORM_NAME=-iphonesimulator
          ctest -j14 -C $(Configuration) -T test --output-on-failure
        workingDirectory: '$(Build.SourcesDirectory)/out/build/${{parameters.platform}}-$(Configuration)'
    
  • 方案2:修改CMake测试配置固定路径
    在项目的CMakeLists.txt中定义测试时,直接指定固定的路径后缀,避免CTest依赖Xcode变量:
    add_test(NAME AugLoopClientTests
      COMMAND ${CMAKE_CURRENT_BINARY_DIR}/$(CONFIGURATION)-iphonesimulator/Microsoft.AugLoop.Client.Tests.app/Microsoft.AugLoop.Client.Tests
    )
    
  • 方案3:改用xcodebuild命令执行测试
    直接调用Xcode原生测试命令,天然支持所有Xcode内置变量的展开,无需额外处理路径问题,示例命令如下:
    xcodebuild test -scheme Microsoft.AugLoop.Client.Tests -destination 'platform=iOS Simulator,name=iPhone 14,OS=latest' -configuration $(Configuration)
    

内容的提问来源于stack exchange,提问作者rahul goyal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:15:05