使用 Xcode 10 为 LiveCode 9.01 构建一个 C/C++ 外部

Building a C/C++ external for LiveCode 9.01 with Xcode 10

我已经接管了一个旧的 LiveCode 应用程序的维护工作,该应用程序使用用 C 编写的自定义外部库。该应用程序不再适用于最近的平台,我有理由相信外部的复杂性是罪魁祸首。我是 LiveCode 的新手,不经常使用 Xcode。

我决定使用我能找到的最新 LiveCode 文档(自 2006 年 11 月起)构建一个简单的外部文件:

http://newsletters.livecode.com/november/issue13/newsletter5.php

由于不再支持 i386 架构,我已从所有 Xcode 项目构建目标配置中删除了 PowerPC-32 和 x86-32,并从有效架构列表中删除了 i386。这些更改允许项目在 Xcode 中正确构建。

Xcode 10 似乎没有与旧文章引用的用于在发布模式下构建的相同接口。要在发布配置中执行构建的初始步骤,我从菜单中选择 运行 产品 > 存档。

当我然后 'Run' 项目时,确保来自 'manage schemes' 界面的构建配置是 'Debug',LiveCode 测试堆栈 rnaHelloStack.rev 没有打开自动地。我可以通过为方案定义 LiveCode Indy 9.0.1.app 可执行文件和 EITHER:

来实现这一点

1) 在方案选项中定义工作目录并将 rnaHelloStack.rev 作为参数传递。 2) 选择方案的启动选项 'Wait for executable to be launched' 并在 运行 启动项目后直接从 Finder 打开 rnaHelloTest.rev 文件。

在所有情况下,当 rnaHelloTest.rev 在 LiveCode 中打开并添加按钮处理程序脚本时,代码会在调用外部函数时停止执行。

我修改了 LiveCode 代码和变量。我最好的猜测是外部没有正确加载到堆栈中。我搜索了最近的文档,但除了这个旧论坛 post 尝试类似的东西外什么也没找到:

https://forums.livecode.com/viewtopic.php?f=17&t=11295&sid=380a6fe4b12111f767fc863262a3acf9

如何通过更新的 LiveCode 9.0.1 IDE 和 Xcode 10 确保 LiveCode 堆栈可以使用文档中的这样一个简单的外部?

Xcode 10 尚不支持,也许很快就会在新版本中支持。 Livecode 的运行速度总是落后于新的 Apple 版本。但这似乎合乎逻辑。 所以使用 Xcode 9.4

如@jjsjjs 所述,目前使用 Xcode 9.4 会更简单,因为 LiveCode 本身仍支持 i386 构建,但 Xcode 不再支持。你可能想暂时为 i386 和 x86_64 构建一个通用二进制文件,除非你确定该应用程序将仅构建为 x86_64。如果仅为 x86_64 构建,请确保 LiveCode 未通过“获取信息”面板上的复选框以 32 位模式打开。 FWIW 我们在 macOS 10.9 sdk 中使用 Xcode 9.4 和符号链接,并针对它构建 LiveCode。

外部文档非常过时了。这些天,我们正在引导人们使用 LiveCode Builder 中的 FFI 功能,但是,如果您只想让外部再次工作而不是从头开始,我建议克隆我的一个开源外部并以此为基础构建您的外部。要么mergJSON or mergMarkdown。请注意,两者都使用子模块,因此请确保递归克隆。

这些外部设备都没有在 IDE 中启动的测试目标。您将构建的外部文件复制到 these instructions 之后的插件文件夹中,然后启动 LiveCode。在开发新的外部设备时,我通常会添加一个构建阶段,通过脚本执行这些步骤以节省时间。

我们的 engine repo 中也有一些示例,但是因为我们使用 gyp 生成项目文件,所以它们可能没有那么有用。