从命令行生成.xcscheme文件

Fru*_*ern 14 xcode xcodebuild

我正在使用我公司的持续集成服务器,并且构建过程失败,因为服务器无法访问xcode项目中的方案.

基本上,他们使用Cmake动态生成xcode项目以用于单个构建,然后丢弃直到下次签入.

我的研究表明,如果存在.xcodechej文件的.xcscheme文件,则会解决此问题,但由于各种原因无法提前生成和检查.

有没有办法使用xcodebuild或其他命令行工具生成此文件,以便我们可以将其用于现有的构建shell脚本?

xcodebuild文档,谷歌和SO在这个主题上令人惊讶地缺乏.

dot*_*art 6

我也使用-G Xcode生成XCode项目; 我在jenkins中使用了scan-build插件(http://blog.manbolo.com/2014/04/15/automated-static-code-analysis-with-xcode-5.1-and-jenkins).它需要工作区文件.我启动和观看xcode的脚本如下所示:($ WORKSPACE由jenkins设置)

#!/bin/bash

/Applications/Xcode.app/Contents/MacOS/Xcode "${WORKSPACE}/Build/arangodb.xcodeproj" &
XCODE_PID=$!

# now we wait for xcode to build the workspace:
WAIT_FOR_XCODE=0
while test ${WAIT_FOR_XCODE} -lt 6; do
    WAIT_FOR_XCODE=`find "${WORKSPACE}/Build/arangodb.xcodeproj" |wc -l`
    sleep 2
    COUNT=`ps -p ${XCODE_PID} |wc -l`
    if test ${COUNT} -lt 2; then 
        echo "XCode went away unexpectedly!"
        exit -1
    fi
done

#ok, we believe its done. kill it, and wait until its realy dead.
kill ${XCODE_PID}
COUNT=2;
while test ${COUNT} -gt 1; do 
    sleep 1
    COUNT=`ps -p ${XCODE_PID} |wc -l`
done
Run Code Online (Sandbox Code Playgroud)


Bry*_*ial 5

不幸的是,从Xcode 5.1.1开始,就没有像Xcode UI那样从命令行自动生成.xcodeproj或.xcworkspace构建方案的机制.好消息是,Xcode项目的pbxproj标记比描述构建方案的XML标记复杂一个数量级.如果你已经设法让CMake在提交时启动格式良好的Xcode项目,那么使用一个非常类似的过程,你可以构建100行左右的XML来描述build-run-test-profile-archive Xcode项目的行动.

如果您还没有查看方案的基础XML结构,请从新项目向导创建一个示例iOS项目,然后浏览.xcodeproj或.xcworkspace文件的内容以获取.xcscheme文件.该结构是相当自我记录的,您甚至可以在没有为您知道不会在CI上运行的那些操作实际指定XML标记的情况下逃脱.

如果做不到这一点,一个不太健壮的方法就是在完成CMake构建过程后开始研究Xcode项目/工作区文件.经过几秒钟后,Xcode的索引器将有时间识别项目并自动生成主项目文件本身内项目的方案.显然,由于您在这种方法中依赖于UI层操作,因此您需要遵循Xcode的突发奇想,并且索引器可能需要几秒钟来构建其索引(例如,较大的项目将需要更长的时间来自动生成方案!)...并且没有触发器建议命令行进程索引和生成成功或失败.您最终必须轮询存在具有适当超时的文件,这在自动构建和测试环境中会有点冒险.


Fru*_*ern 2

实际上,我可以通过使用 cmake 生成项目,然后使用 xcode gui 制作我需要的方案文件来做到这一点。我使用终端从项目中提取 xcscheme 文件,并将它们放入源代码管理跟踪的另一个目录中。作为生成过程的一部分,我只是添加了一些 shell 脚本,将之前制作的副本复制到新生成的项目中,然后照常继续构建过程。

  • 是否可以看到您的 cmake 脚本来执行此操作? (2认同)