管理项目

每个项目在创建之后都会出现在项目目录窗体的Projects项目列表栏中。在这个列表中您可以重新组织多个项目的排列顺序,并进行项目分组。所有这些操作都可以通过鼠标拖拽及对准项目条目点击鼠标右键弹出菜单完成。弹出菜单还包括了移除项目的功能。注意软件助手并不会真的删掉具体的文件目录,而仅从当前的项目管理清单中除名。即使项目被除名,也可以通过“Import Existing Package”导入现有项目,或者更简单的就是从Finder打开文件夹直接用鼠标拖拽到项目管理列表中。

项目编辑器窗体

在软件助手中更频繁的日常操作是项目编辑器窗体。通过这个视图,用户可以编辑项目名称、位置、依存关系和部署选项。

多数项目编辑操作会影响到项目的Package.swift文件内容。如果软件助手无法成功重写Package.swift的内容,比如该文件包含了一些新的选项或者软件助手无法处理的选项,则软件助手会显示一个通知声明项目处于⚠️只读⚠️状态。这意味着项目名称和依存关系无法通过软件助手进行修改,但其他的操作,比如编译和部署选项仍然是有效的。另外如果项目包含多个编译目标或者包括了特定的预编译指令“#if”,则同样会触发只读状态。在这种情况下,项目编辑器只显示项目中与macOS操作系统有关的那一部分内容,但相关信息无法在软件助手内变更。

所有项目变更内容都会导致Package.swift文件重写,同时软件助手会为该文件做一个名为“Package.swift.orig”的副本。注意只有这个文件不存在的时候软件助手才会制作此副本。

项目编辑器视图布局

项目编辑器包含若干栏目,每个栏目都是为编辑特定的项目属性而设置,用于执行编译和部署配置。

工具栏

项目编辑器窗体的工具栏提供了若干简洁功能,如返回到项目目录管理窗体、不同操作系统的编译选择以及部署命令等等。这些命令被分成四个不同的组合。对准主按钮按住鼠标左键不动,则可以弹出更多的选项。另外一种方式您也可以通过标准的macOS操作系统“配置工具栏”来管理弹出菜单,并可以将所有可用命令进行拖拽和重组。

命令分组如下:

Open 打开
以下命令用于在macOS系统上打开项目文件
Open Directory在Finder中打开项目所在的目录。
Open Terminal打开一个新的终端命令行并将当前目录跳转到项目文件夹下。
Open Project如果Xcode工程文件已存在,则用Xcode打开本项目
Build 编译
以下是所有可以选择的编译命令,包括macOS和Linux
Build Local执行本地macOS编译操作,选择的是debug调试模式。
Build Linux通过Docker容器进行Linux本地编译
Build Deployment Image通过Docker容器执行Linux发行版本编译(release),同时准备部署镜像(即组织新镜像并灌入编译好的待发行二进制文件)。
Deploy Project首先执行Docker容器内的Linux编译,然后创建并标记部署镜像,最后调用已与本项目关联的部署配置。
Clean Project同时清除macOS和Linux的所有编译结果及临时文件。
Run 运行
以下命令用于项目在本地操作系统或Linux中的执行。
Run Local Tests在本地macOS上运行测试
Run Local Exe执行本地调试编译并自动打开一个终端命令行窗口运行编译结果。
Run Linux Tests通过Docker容器运行Linux单元测试。
Run Linux Exe在Docker容器中编译并自动打开一个终端命令行窗口执行编译结果。
Xcode 集成
以下命令用于通过SPM软件包管理器创建Xcode工程项目
Regenerate Project 重新创建Xcode工程文件。该重建操作⚠️不会⚠️包括Linux集成,如果希望集成Linux编译,则必须手工选择“Integrate Linux Builds with Xcode Project”复选框。
Integrate Project 重新创建Xcode工程文件并集成Linux编译脚本,注意该操作会包含Linux集成选项⚠️无论⚠️“Integrate Linux Builds with Xcode Project”复选框是否已经选中☑️。

项目设置

项目设置方案目前包括项目名称、项目存储目录文件夹、Swift工具链版本兼容信息、Xcode工程集成选项。
上述任何选项的修改都会导致项目被设置为变更状态,但是您必须手工保存修改否则变更不会生效。

如果希望改变项目名称,请点击项目名称右侧的“Set”按钮进行变更。该按钮按下后会激活标题栏用于修改项目标题。输入完成后敲回车键即可提交修改;该变更只有在您保存后才会写入Package.swift文件并生效。

如果需要变更项目文件所在目录,请点击“Locate”按钮,这样您就可以更新项目目标文件夹。如果项目文件夹被手工改名或者删除,您可能就需要进行这个操作。在完成项目文件目录变更操作后,整个项目内容都会被重新加载并更新。

Swift 工具链选项可以弹出所有经过软件助手验证过的兼容工具链。您可以根据项目及操作系统自行选择针对项目的合适工具链,如果变更工具链则软件助手在编译本地工程或者编译Linux工程时都会调整为预期的工具链。如果您的部署目标为非容器类系统,比如EC2 弹性计算,则选择与目标服务器Linux版本匹配的工具链是非常重要的事情,否则部署会出问题。

“Automatically Integrate Xcode Project”复选框用于决定项目组件依存关系变更时,软件助手是否会自动追加Linux编译脚本。如果您希望在Xcode编译时自动同步编译Linux应用,那么就请给这个选项打勾☑️。选择该选项后,一旦项目组件有调整,比如追加或者删除了依存关系,则软件助手会自动重新生成Xcode工程文件并将同步编译Linux应用的脚本自动加入到Xcode工程中去。注意,一旦选择了该选项,Xcode编译时间可能会适当延长,不过好消息是在Xcode编译中可以看到源代码在Linux上是否又问题。另外该选项只在自动重建Xcode工程文件时生效;您也可以选择“Regenerate Xcode Project”重建Xcode工程或者“Integrate Xcode Project”集成Xcode工程,此时该选项会一同带入操作中,这样您就可以决定暂时集成或者分离这个脚本。

项目组件依存关系

项目编辑器窗体中的组件关系管理栏目列出了当前项目所有依赖的函数库组件。您可以点击键盘上的删除键用于移除不需要的组件;任何组件关系变更操作都必须保存,否则不会生效。删除组件的操作会导致软件助手重写Package.swift文件;因此对于只读项目来说,已注册组件是无法注销的。

该栏目中每个组件条目都提供一个版本控制菜单,点击后会列出最近五个版本的序号,还会标记出最新版本及子版本信息。

比如,某一个软件函数库版本为2.5.19,那么显示时会表达为“2.x.x”,“2.5.x”以及按时间顺序排列的最近5个最新的版本。当新增任何一个依存关系时,软件助手默认会自动明确标记主版本号,然后隐式标记中间版本和子版本号,比如“2.x.x”,便于项目选择合适的版本信息。该复选框类型为NSComboBox组合类型,意味着如果没有出现您期待的版本号,则可以手工输入一个。注意软件助手暂时不支持版本范围方式的选择方法。

因为受限于Package.swift文件,该清单目前只显示与macOS兼容的软件组件函数库。大部分情况下多书函数库都同时兼容macOS和Linux,但是如果Package.swift文件包含了条件编译选项#if并声明在macOS上的函数库与Linux上的对应内容有区别,则软件助手列出的依存关系可能会是有限的,但在编译时实际依存关系会严格按照Package.swift文件中的内容执行。

如果要想您的项目追加一个新的依存关系,可以将“有效兼容关系”列表(见下文)的任何部件直接用鼠标拖拽到本栏目中。通过点击视图标题栏右侧的加号➕还可以手工追加一个新组件。这种情况下软件助手会弹出一个新对话框,您可以从这里输入该组件的函数库来源URL,并可以选择一个产品分类。在项目中追加一个新组件会在“Available Dependencies”(可用组件函数库)栏目中永久追加(见下文)。

依存关系变更操作只有在保存变更之后才会生效;如果在保存之前关闭了窗口或者进行了编译操作,则系统会提示“项目已变更,是否需要保存?”。

可用组件函数库

默认情况下,可用组件函数库包含了一个带分类的函数库清单,该清单已经确认可以同时在macOS和Linux上编译。您可以随时通过鼠标拖拽的方式从这些组件中挑出合适内容增加到您自己项目的依存关系中。

如果是通过“Project Dependencies”视图中追加的依存关系,则该组件也会出现在指定分类中。

该栏目所有内容都是经过分类的。比如您可以看到“Session Management”(会话管理)、“Authentication”(身份验证)和“Database Connector” (数据库连接工具)等等。每个分类下都可以展开旗下不同的组件内容。您也可以通过搜索关键字来缩小选择范围。该清单在软件助手启动时会从Github的一个资源库上下载更新。一旦更新完成即可以应用到所有本地项目上。

项目部署

Perfect Assistant软件助手的项目目录管理窗体还能够列出当前本机上所有项目及其部署配置方案。每个不同的部署配置方案都是可以单独编辑的,并可以和一个或多个项目进行关联。在项目编辑器窗口中列出的部署配置方案仅与当前选择的项目有关联,但也允许针对当前项目继续添加并关联新的部署配置方案。

视图右侧的加号➕按钮可以弹出菜单,内容为现有部署配置方案清单,可以在此基础之上继续追加。

从菜单中选择现有部署配置方案会即可与当前项目进行关联。如果此时点击追加新部署配置方案,则软件助手会弹出一个对话框用于编辑新部署配置方案,而且如果配置方案保存并生效的话会自动与当前项目进行关联。

用键盘上的删除按钮可以直接删掉选中的部署配置。部署配置变更操作同样需要在当前项目编辑器窗体中进行保存变更之后才能生效。

当部署项目时,所有已关联的部署配置方案都可以调用。每个项目都可以关联到多种部署配置方案,即使各个配置方案都是不同服务商提供的都没关系。比如同一个项目可以部署到亚马逊EC2弹性云计算服务器主机例程上,也可以同时部署到谷歌云应用引擎,只要项目关联到部署配置方案即可实现此类操作。

任务状态栏

最后介绍一下项目编辑器窗体最下方的任务状态栏。该视图在进行任何操作的情况下都会有一些状态更新的消息显示。如果没有任何与项目有关的操作,则该栏目会保持最小化状态;如果执行了诸如编译、部署或者创建项目等操作,该视图会自动展开并显示输出。

该栏目视图是终端命令行的在执行任务过程中的文字输出。您可以滚动查看该视图,或者调用该栏目右上方的按钮选择暂停任务或者清除结果,无论任务是成功还是失败。左侧弹出菜单则可以显示当前执行的任务或者之前已经执行过的任务。

Next: Linux 编译过程