无法使用 SQLite.swift 构建命令行项目

Posted

技术标签:

【中文标题】无法使用 SQLite.swift 构建命令行项目【英文标题】:Can't build command line project with SQLite.swift 【发布时间】:2016-04-18 17:25:19 【问题描述】:

我正在尝试构建一个使用 sqlite 的命令行工具。我已经下载了Stephen Celis' swift wrapper, SQLite.swift, 并构建了一个可以运行的 OS X 应用程序。但是,我无法构建我的命令行工具。我相信我正确地遵循了SQLite.swift Documentation for frameworkless targets 中的说明,但显然我遗漏了一些东西。我在 Helper.swift @ import CSQLite -> No such module 'CSQLite' 中遇到错误。

我正在链接 libsqlite3.dylib(也尝试过 libsqlite3.tbd) 我将 SQLite.swift 源添加到我的项目中 我在桥接头文件中添加了#import sqlite3.h & #import "SQLite-Bridging.h"。也许值得注意的是,当我右键单击 sqlite3.h 或 SQLite-Bridging.h 时,xCode 不知道它们在哪里/是什么。

我很高兴将我的测试项目(大约 80KB,压缩)发送给任何能够并愿意提供帮助的人。可能有一个非常简单的解决方案,我只是不明白它是什么。

感谢任何帮助,

-克雷格

【问题讨论】:

我的 Objective-C 桥接头 (xxx-Bridging-Header.h) 由于某种原因没有正确添加到项目中。另外,我必须在三个文件中注释掉 import CSQLite:Connection、Helpers 和 Statement。项目现在构建并运行。 【参考方案1】:

我也遇到过同样的问题。 有很多编译器错误,例如“Connection.swift:26:8: Could not build Objective-C module 'CSQLite'”

错误的根源在于“lctx.h:13:25: Use of undeclared identifier 'SYS_getlcid'”

值得一提的是,我安装了两个 Xcode - /Applications 的 v 6.2 和 ~/Applications 的 v 7.3。我的项目是带有 SQLite pod 的 Swift 上的 ios 应用程序,我使用 Xcode 7.3 打开它。

SQLite pod 在 project_folder/Pods/SQLite.swift/CocoaPods/iphonesimulator/module.modulemap 中有一个文件。 该文件有内容

module CSQLite [system] header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/sqlite3.h" export *

为了修复编译器错误,我将 module.modulemap 的内容更改为

module CSQLite [system] header "/Users/my_user_name/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/sqlite3.h" export *

变化是我将 sqlite3.h 的搜索指向了 Xcode 7.3 所在的 ~/Applications 文件夹。 这使我的项目得以编译。

【讨论】:

就我而言,我旁边有两个 Xcode,8 和 7.3。我已将 7.3 重命名为 Xcode_7。然后我需要将模块映射路径中的“Xcode.app”更改为“Xcode_7.app”。干杯! 非常感谢。救救我

以上是关于无法使用 SQLite.swift 构建命令行项目的主要内容,如果未能解决你的问题,请参考以下文章

无法从命令行构建 Phonegap 项目

从命令行构建 Eclipse Java 项目

从命令行构建 Eclipse Makefile 项目

无法构建quazip。 moc 编译器不运行。命令行找不到相关的类

为啥 CruiseControl.NET 无法构建,但使用命令行中的 msbuild.exe 有效?

使用 swiftyJSON 和 sqlite.swift 将基于 json 的数据添加到 sqlite 数据库中