Xcode外部构建系统使包安装

时间:2014-05-09 06:36:43

标签: xcode makefile jailbreak tweak

我创建了一个"外部构建系统"在Xcode中项目运行时运行我的自定义Makefile。默认情况下,这可以正常工作,但是当我想传递它-C ~/Desktop/GIFPaper/ package install时,所以完整的shell命令等效于:

make -C ~/Desktop/GIFPaper/ package install

我收到此错误:

/Applications/Xcode.app/Contents/Developer/usr/bin/make package requires dpkg-deb.
make: *** [internal-package-check] Error 1
Program ended with exit code: 2

奇怪的是我安装了dpkg,如果我打开终端并将目录更改为:

/Applications/Xcode.app/Contents/Developer/usr/bin/

和运行:

make -C ~/Desktop/GIFPaper/ package install
一切正常。到目前为止,我已添加:

-C ~/Desktop/GIFPaper/ package install

作为 Run 方案的参数。我做错了什么?

3 个答案:

答案 0 :(得分:1)

我明白了,对于今后有这个问题的人。使用curl http://debmaker-osx.googlecode.com/svn-history/r5/trunk/dpkg-deb > dpkg-deb下载dpkg-deb,然后将其权限设置为chmod +x dpkg-deb的可执行文件,然后使用sudo cp dpkg-deb /Applications/Xcode.app/Contents/Developer/usr/bin/dpkg-deb将其复制到Xcode bin目录

希望这有帮助!

答案 1 :(得分:1)

我猜你使用Makefile取决于这个文件(或类似的规则):

https://github.com/DHowett/theos/blob/master/makefiles/package/deb.mk

它要求dpkg-deb在路径中,否则将失败并显示您发布的错误消息。

你说你安装了dpkg,但这并不意味着从Xcode调用时可以使用名为dpkg-deb的可执行文件。实际上,使用外部构建系统,可以使用受限制的PATH调用make。您安装dpkg-deb和复制到/Applications/Xcode.app/Contents/Developer/usr/bin/的解决方案非常脏,并且涉及在Xcode本身中安装缺少的二进制文件,在默认PATH的第一个目录中。

或者,您可以通过检查"在环境中传递构建设置"直接从Xcode修改PATH。 (这是默认设置)并添加PATH构建设置。理想值为${inherited}:/usr/local/bin${inherited}:/opt/local/bin,具体取决于实际安装dpkg-deb的位置。

答案 2 :(得分:1)

我有这个问题。 首先我用brew install dpkg安装了dpkg,但是如果我运行make package install我收到了这个错误

dpkg-deb: file `com.mycompany.mytweak.deb' contains ununderstood data member data.tar.xz     , giving up
dpkg: error processing com.mycompany.mytweak.deb (--install):
 subprocess dpkg-deb --fsys-tarfile returned error exit status 2
Errors were encountered while processing:

这是因为dpkg的压缩算法与iphone不兼容,所以我只是使用

备份我安装的dpkg-deb

mv /usr/local/bin/dpkg-deb /usr/local/bin/dpkg-deb.bak

我在

中复制了dpkg-deb locate
/Applications/Xcode.app/Contents/Developer/usr/bin/

在我使用

安装dpkg.deb的文件夹中
sudo cp /Applications/Xcode.app/Contents/Developer/usr/bin/dpkg-deb /usr/local/bin/dpkg-deb

现在可行。