我正在尝试将libsass(一个C库)导入我用Swift编写的OSX项目中。但不知何故,我正在处理很多依赖问题。顺便说一下,我在本指南中使用模块地图方法:https://spin.atomicobject.com/2015/02/23/c-libraries-swift/。
libsass repo:https://github.com/sass/libsass
我可以在c:
中运行version.c(提供示例libsass)程序#include <stdio.h>
#include "sass/context.h"
int main() {
puts(libsass_version());
return 0;
}
我的方法是在&#39; libsass / include&#39;中导入头文件。目录。
以下是迄今为止的尝试:
1 我构建了一个module.map文件并将其放在libsass目录中。
module libsass [system] {
header "include/sass.h"
export *
}
2 然后我将目录添加到我的swift项目中
3 设置Swift编译器&gt;搜索路径&gt;导入路径为&#39; $ {SRCROOT} / libsass&#39;
4 构建,我遇到了这个:
'sass/base.h' file not found with <angled> include; use "quotes" instead
'sass/version.h' file not found with <angled> include; use "quotes" instead
'sass/values.h' file not found with <angled> include; use "quotes" instead
5 构建设置&gt;搜索路径&gt;标题搜索路径设置为&#39; $(PROJECT_DIR)/ libsass / include&#39;
构建设置&gt;搜索路径&gt;图书馆搜索路径设置为&#39; $(PROJECT_DIR)/ libsass / include&#39;
这次我没有看到以前的错误,但在test_superselector.cpp中遇到了一个新错误:
'../ast.hpp' file not found
6 我添加了&#39; -lsass&#39;构建设置&gt;链接&gt;其他链接器标志。因为在提供libsass的示例中,它们使用-lsass标志来编译c代码。
同样,没有好处。
我花了两天时间试图解决这个问题,但没有明确的进展。请查看libsass回购。任何帮助表示赞赏。的谢谢!
答案 0 :(得分:0)
我简要地看了一下github上的libsass代码。无法找到ast.hpp
文件,因为您必须已将libsass源目录添加到Xcode项目中,并且它正在尝试将库源构建为项目的一部分。
由于您在链接器标志中添加了-lsass
,我认为您正在尝试在项目中使用已构建的库,这是一种更简洁的方法,而且模块映射很有用。
您不应该将libsass目录添加到Xcode项目中。您可以将包含libsass标头和库的目录放在项目的目录中,这与将它们添加到项目中的方式不同。
header
中的module.map
行应该具有相对于module.map
位置的标题的绝对路径或路径。
其他一些观察结果:
libsass
所在的目录
库文件位于。例如,如果它是静态库,
然后该文件将被称为libsass.a
。