最近发现xcode的一个新用法。xcode在编译程序前和编译程序后其实是可以调用shell或者其他脚本语言的,有了这个,真的是大大的方便了了我们开发人员了。因为,这样我就可以在编译程序之前调用svn的命令把服务器上同事写的源码自动更新之后再进行编译。甚至可以先用脚本语言去读一些自已写的配制文件,然后根据配置文件生成编译时要用到的代码。然后再一起打包编译,这确实是太方便了。今天我就用python脚本写了一个在C++中读取我一个目录下的C++类然后生成了一个用类名称字符串来实例化对象的管理类。这样的话,我的C++就有了像Java那样的反射功能了。
我这里的这个项目是我的一个cocos2c-x的游戏项目,我就用这个来介召这种用法吧。
这里有两个地方要住意,因为我们原来打算的是使用python脚本的,但这里的解释器是"/bin/sh",所以这里要改一下。
我试了一下,这个原来是文本编码上的问题,我们在脚本的第一行加上脚本代码文本编码就好了。如下图:
欢迎转载,注明下出处就行:
http://fengmm521.blog.163.com/blog/static/250913582014917103726653/
下边简单的说一下怎么用python脚本吧。当然了,你也可以在你编译代码之前用python把某个地方的资源文件复制到你的项目中。或者在你编译程序时自动调用脚本语言方问服务器,对服务器作一些配置什么的,或者配置数据库,甚至可以用脚本给你自已发个短信什么的,对于那些特大项目,比如linux系统什么的,编译一次要几个小时的项目,你就可以用这个脚本在项目编译好的时候给你自已的手机发送一条信息。什么的。真的是太人性化了。xcode这个工具觉对是程序员的福音了。可能这种思路在别的系统上也可以实现,但我真的没有发现会有xcode这么简单。
好了,言归正转,先打开xcode,再建一个项目吧。
![xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行 xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行](http://img0.ph.126.net/GEyZDrIupvPOrSb6YpyJ6w==/966303595057686849.png)
看上边,先选择我自已的项目,然后可以看到右边是关于项目的设置,我们选择"Build Phaese"的这个编译相关选择。
点上那个添加脚本的"+"号。新建一个脚本,这里新建的脚本默认是shell脚本。我们可以通过解释程序看出来,看下图
![xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行 xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行](http://img2.ph.126.net/QCjSm7VxI3ZLwCn_ZwTdqw==/2885962936231727936.png)
还有一个就是,我们要把我们的脚本托动到Compile Sources项上上边,这是因为xcode在你点击运行按开始编译的时候,是按从上向下的顺序进行了。因为我的python是要生成代来的,所以,这里要放在编译代码之前,这样新生成的C++代码才会在生成之后进行编译。
好了,我们先来改"/bin/sh",我们要改成我们的python所在路径,但是,什么,你不知道python路径在那里。好吧,这里有一个办法。打开你的终端,然后输入"whereis python"回车,你就可以看到mac的python是在那里了。如下图:
![xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行 xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行](http://img1.ph.126.net/8snYJIBLlc8zAynHl68Gcw==/2405203676009341822.png)
好了,我们改一下我们的脚本解释器路径:
![xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行 xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行](http://img2.ph.126.net/grnwrvztUwysDNWaJkeU0g==/2438136248284489229.png)
好了,我写了一个脚本。现在我要开始编译了。编译前,我们看一下我的这个目录下的样子。
![xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行 xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行](http://img0.ph.126.net/-VnpWYX0nOY3yAjW_3tO9g==/1171217378110405209.png)
开始编译并运行程序:
![xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行 xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行](http://img1.ph.126.net/XdSLjHGypyej_w5_AhbXVA==/6608710296260016946.png)
我们再看一下结果。
等等,编译出错了,说是我的脚本有错误,看一下说明:
![xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行 xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行](http://img0.ph.126.net/BWINGyAA3rKig8BtIYfc-w==/1146447580159872369.png)
可以看到,是脚本的第4行错误,看一下脚本,第4行是:
![xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行 xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行](http://img0.ph.126.net/VfDV5sjO_O1Xm2pT-3XEIA==/1048775763241358817.png)
![xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行 xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行](http://img1.ph.126.net/XU0qmuvJlcOKt4T3btM-Tw==/1107604033373907811.png)
加入"
#-*- coding: utf-8 -*-
",表示代码是以utf-8编码的。好了,我们现在来看一下,我们的生成文件的文件夹
![xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行 xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行](http://img2.ph.126.net/OVYHoMoZYKSfmDoPHaZEKw==/1316458466175742004.png)
看到了吧,我这里生成了test.cpp,不用想了,里边一定写入了"//这是一个测试.cpp文件,可以在这里写入代码的文字了",打开看一下吧。
![xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行 xcode编译程序时调用python脚本 - ♂苹果 - 眼睛想旅行](http://img0.ph.126.net/gVruxRH_LtxDhwdhGZjMXw==/6619275503490999165.png)
是吧。和我们预想的一样。
当然了,这只是一个测试,其实python是非常强大的,小到文件内容读写和字符串处理,大到操作数据库,创建http或者socket服务器,或者使用网站api发送微博或者短信。有了这个,我们就可以在我们一些需要测试网络接口的地方,在运行程序之前,先用python在本机上创建一个http或者socket的可以访问的服务器。然后在程序运行的时候启动这个服务器来完成客户端的服务器接口测试。
嗯,今天的学习就到这里了。写下来今天的收获希望对热爱学习的同学可以有所帮助,也方便自已日后查找回忆。工欲从其事必先利其器。好的工具很重要。