AppCode 中开发 Mac OS X 应用程序或共享库的经验小结
AppCode 是 JetBrains 公司出品的用于开发 Mac OS X 及 iOS 应用程序的集成开发环境,只能运行于 Mac OS X 操作系统环境下,作为 XCode 的高级替代品。由于其基于 IntelliJ IDEA 相同的代码基础,自然继承了 IDEA 的优良传统,代码智能提示以及自动完成、重构等等不一而足。在实际开发过程中,如果涉及到一些 XCode 特有的可视化设计功能,AppCode 实际上是调用 XCode 来实现;而其他情况下,基本上就是 AppCode 独立实现的功能运行了。这里面有几点经验总结一下,以备查:
1、建议将 AppCode 的快捷键方案设置为 IDEA 方案,使用与 IDEA 基本相同的快捷键习惯,这样比较方便一点。当然你也可以将 AppCode 的快捷键方案设置为 XCode 方案,使用 XCode 习惯。
2、采用 IDEA 快捷键方案后,项目属性设置可通过快捷键 Command+; 快速切换出来,否则需要点击菜单“File”->“Project Settings...”来调出。在项目属性设置中,有几个比较关键的地方需要注意:(1)一般情况下,我们只需去具体设置一个项目的同名target的各种编译属性,不用去设置项目或者“Shared Settings”的全局默认属性。特别是在target的属性页部分,有一个“Build Phases”,用于对target编译所需的源代码文件以及Frameworks进行增删设置的,特别是源代码文件,有时候后添加进项目中的源代码文件,如果没有被增加到Build Phases的源代码列表中,那么这个源代码文件是不会被编译的!通过在AppCode中从project的项目文件树状列表将源代码文件拖放到Build Phases源代码列表中即可实现增加,点击列表左下角的“-”减号即可从源代码列表中删除选定的源代码文件。(2)如何增加编译器选项?编译器选项有时候很重要,需要单独添加指定的。但是默认情况下 AppCode 并未提供设置编译器选项的方式。其实有一个变通的办法——因为 AppCode 使用与 XCode 完全相同的项目文件组织方式,因此我们可以进入到项目的 .xcodeproj 目录内(这里假定项目名称为 abc,那么就会生成一个名为 abc.xcodeproj 的目录),用文本编辑器打开名为 project.pbxproj 的文件,找到包含有类似如下内容的地方:
D0B815633AC0689B70BCBBB8 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSET_PACK_MANIFEST_URL_PREFIX = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
EXECUTABLE_PREFIX = lib;
GCC_VERSION = "";
OTHER_CFLAGS = “”;
10 OTHER_CPLUSPLUSFLAGS = "";
OTHER_LDFLAGS = "";
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
这里要注意,第一行的十六进制字符串不一定是固定的,可能会随着不同的项目而变化。红色的两行是需要自己手工添加上去的,这其实是按照 cmake 的标准添加的编译器编译标识参数。添加完后保存该文件,在 AppCode 中重新打开这个项目就会看到 target 的 Build Settings 页面里面,在 User-Defined Settings 列表中多出了我们添加的那两个红色的编译器编译标识参数,你可以添加额外的编译标识参数了。
3、设置 target 的编译模式为 Release 或 Debug。默认情况下,target 的编译采用 Debug 模式,我们需要修改其为 Release 模式,可以通过快捷键 Alt+Shift+F10 然后在弹出的窗口菜单中选择“0”(Edit Configurations...)或者点击菜单“Run”->“Edit Configurations...”来为 target 创建编译运行配置,并选择 Release 模式即可。
4、target 编译产生的最终目的文件(比如可执行文件或者库)的位置虽然可以修改,但是这里推荐使用系统默认的路径。我们可以通过 AppCode 中的项目树状文件列表以快捷键 Command+Shift+C 来复制选中的最终目的文件,然后在终端中粘贴,用 cp 命令等方式去拷贝或进行其他操作等等。或者通过点击菜单“Run”->“Show Build Folder in Finder”来打开 target 编译产生的最终目的文件所在的文件夹进行各种复制粘贴等操作,还可以点击菜单“Run”->“Clean Build Folder”可以自动清空最终目的文件所在文件夹。当然,你可以为这两个菜单项设置快捷键,那么操作起来就更方便了。
AppCode 中开发 Mac OS X 应用程序或共享库的经验小结的更多相关文章
- 什么是Nib文件?(Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口)
Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口.Nib文件是Interface Builder文档.通常您会使用Interface Builder ...
- 能在xcode5中开发基于IOS7sdk的应用程序兼容ios4.3之后的系统吗?
能在xcode5中开发基于IOS7sdk的应用程序兼容ios4.3之后的系统吗?
- 在VMware虚拟机中安装Mac OS 操作系统
1. 安装VMware 我这里是安装VMWARE12.exe,其他的版本我不知道是否可以正常运行,最好大家安装12版本的比较好. 2. 安装 Mac OS X Unlocker for VMware ...
- 设置 VMware 中的 Mac OS 虚拟机进入 Recovery 模式
Ø 简介 本文主要介绍 VMware 中的 Mac OS 虚拟机如何进入 Recovery 模式的方法,具体步骤如下: 1. 选择 Mac OS 虚拟机,点击"打开电源是进入固件&qu ...
- Linux:32/64位程序(应用程序、共享库、内核模块)
摘要: Linux系统区分32/64位,相应地,应用程序.共享库和内核模块也区分32/64位. 本文以Ubuntu系统为例,介绍如何编译和使用32/64位的应用程序.共享库和内核模块. 1. 应用程序 ...
- 在VMware中安装Mac OS
macOS与Darwin http://blog.csdn.net/hintcnuie/article/details/38468093 OS X 是整个操作系统的一个集体名称.而Darwin 就是其 ...
- 虚拟机中安装MAC OS X教程(适用所有电脑方法,特别是cpu不支持硬件虚拟化的电脑)
前言 之前写了一篇在Windows上搭建Object-C开发环境,并且写了一个HelloWorld程序.但真正开发苹果软件是在MAC OS X系统中(以下简称OSX)中.买不起MacBook,也没有O ...
- 在VMware Workstation 9中安装Mac OS X 10.8 Mountain Lion
本文环境: CPU:Intel Core i7 920: OS:Windows 7: 内存:8G: 玩Hackintosh各有各的理由,不管什么理由,利用虚拟机安装Mac OS X都是一个可行的办法. ...
- vmware 12中安装MAC OS X Lion 10.7
下载并安装vmware. 下载并安装MAC补丁. 创建虚拟机. 设置ISO文件. 开启虚拟机. 安装vmware tools. 1. 下载并安装vmware.我是直接在腾 ...
随机推荐
- NOIP模拟赛 某种数列问题
众所周知,chenzeyu97有无数的妹子(阿掉!>_<),而且他还有很多恶趣味的问题,继上次纠结于一排妹子的排法以后,今天他有非(chi)常(bao)认(cheng)真(zhe)去研究一 ...
- 初学者之 Git 和 Github
git和github是两个完全不同的概念. git 是一个版本管理工具,是可以在你电脑不联网的情况下,只在本地使用的一个版本管理工具,其作用就是可以让你更好的管理你的程序,比如你原来提交过的内容, ...
- php 常用函数集合(持续更新中...)
php 常用函数集合 在php的开发中,巧妙的运用php自带的一些函数,会起到事半功倍的效果,在此,主要记录一些常用的函数 1.time(),microtime()函数 time():获取当前时间戳 ...
- Java-basic-7-面向对象
继承 在Java中,每个子类只能有一个父类,但可以继承多个接口. 子类继承父类,类定义的时候用extends. 继承接口,用implements. 重写 声明为final的方法不能被重写. 声明为st ...
- 【HIHOCODER 1403】后缀数组一·重复旋律(后缀数组)
描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成的数列. 小Hi在练习过很多曲子以后发现很多作品自身包含一样的旋律.旋律是一段连续的数列,相似的旋律在原数列 ...
- 天问之Linux内核中的不明白的地方
1. Linux 0.11\linux\kernel\exit.c 文件中, 无论是send_sig()函数还是kill_session()函数中,凡是涉及到发送信号的地方,都是直接 (*p)- ...
- Educational Codeforces Round 53 (Rated for Div. 2) C Vasya and Robot 二分
题目:题目链接 思路:对于x方向距离与y方向距离之和大于n的情况是肯定不能到达的,另外,如果n比abs(x) + abs(y)大,那么我们总可以用UD或者LR来抵消多余的大小,所以只要abs(x) + ...
- vagrant 安装ubuntu12.04 64 bit
1 下载用于ubuntu 12.04 用于vagrant的镜像,虚拟机是virtualbox $ wget http://files.vagrantup.com/precise64.box jb@e3 ...
- CI 分页类的使用
分页本身很简单,无非就是一个 [limit $offset, $length] 的过程. $length 是每页显示的数据量,这个是固定的.要确定的就只有 $offset了. 在CI中的分页类同样要依 ...
- shutil——高级的 文件、文件夹、压缩包 处理模块
高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length])复制文件内容(不包含元数据)从类文件对象src到类文件对dst.可选参数leng ...