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
相关产品推荐
相关产品推荐

