Macos 与OS X框架一起使用clang_

Macos 与OS X框架一起使用clang_,macos,vim,clang,clang-complete,Macos,Vim,Clang,Clang Complete,如果我将以下内容保存到/tmp/test.cpp: #include <CoreServices/CoreServices.h> #include <iostream> int main() { CFStringRef my_string = CFSTR("hello, world!"); std::cout << CFStringGetLength(my_string) << '\n'; } #包括 #包括 int main(){ C

如果我将以下内容保存到/tmp/test.cpp:

#include <CoreServices/CoreServices.h>
#include <iostream>

int main() {
  CFStringRef my_string = CFSTR("hello, world!");
  std::cout << CFStringGetLength(my_string) << '\n';
}
#包括
#包括
int main(){
CFStringRef my_string=CFSTR(“你好,世界!”);
std::cout请参阅以获得有用的答案。显然,
clangu_complete
使用了
-cc1
选项,该选项不支持
-framework
参数

我可以使用
-triple
-target
选项替换我所需的
-arch
参数,可能其中一个
-cc1
参数可以替换
-framework

要重现您的错误,您可以

:! clang -cc1 % -framework CoreServices
因此,我认为现在的问题变成了“如何将框架传递给
clang-cc1
?”

编辑:通过运行

clang++ -v -framework CoreServices ./test.cpp 
您可以获得
clang-cc1

我的是

-triple x86\u 64-apple-macosx10.6.7-emit obj-mrelax all-disable free-disable llvm-verifier-main file name test.cpp-pic level 1-mdisable fp elim-released alization-masm verbose-munwind tables-target cpu core2-target linker version 123.2-v-resource dir/Developer/Platforms/iPhoneOS.platform/usr/bin/./lib/clang/2.1-fdepFor Calor限制19 - FMIT长度179 -堆栈保护器1 - FBUTRO-FCXX异常- FExcuts- FC++诊断选项-O/Va/文件夹/W2/W26NavgVoTujTeqE9Q+9++TI/-TMP-/CC-GBJXD6. O-XC++/.Test.CPP


我从末尾删除了-o参数和输入文件,并将其添加到
.vimrc
中的用户选项中,但代码完成仍然无法正常工作..Hmm

以防任何人仍然存在此问题(我使用的是
company clang
的SpaceMac扩展名,但我希望问题是相同的)

clang-framework
参数显然是传递给链接器的,而
clang-cc1
只涉及编译(因此,它不知道或不支持链接器选项;它接受一个
链接器选项=
参数,显然,它在我的shell中对我有效,但添加到
.clang\u complete
文件时无法识别)。框架基本上只是一组嵌套的标题集合,因此您可以使用
-I
手动将所有需要的标题包含在框架中,这样就可以了

Qt5的示例:

而不是

-F/usr/local/opt/qt5/lib
-framework QtCore
使用

-I/usr/local/opt/qt5/lib/QtCore.framework/Versions/Current/Headers

我猜您可能需要对特定框架中的标题进行一些内省,以确定要包含哪些目录。可能有很多目录。不太漂亮,但它可以工作(至少在我的情况下).

VIM尝试从您的cwd中搜索clang_complete否?如果您不在/tmp/中,您的文件一定不在/tmp/!cwd is/tmp/-我知道正在读取.clang_complete文件,因为只有在我将
-framework
选项添加到.clang_complete时才会出现“未知参数”错误。您想使用:!clang++?调用clang_complete吗这只是调用编译器!你的叮当声完成了这个插件吗:?我知道它调用编译器:)我已经让clang_complete很好地工作了,只是没有使用框架。虽然我使用的是最新版本的插件,但我对-arch标志也有同样的问题。我可以从命令行用clang编译我的项目,但clang_complete抱怨未知参数:'-arch'。我查看了源代码,尽管我不是fami作为python的骗子,所有的useroptions参数似乎都被清晰地传递到libclang.dylib(传递到函数clang_parseTranslationUnit)。这就是我现在所能得到的——我在项目页面上发布了一个问题。如果我取得进展,我会不断更新。感谢你的贡献:)如果没有其他答案,你很快就会得到赏金;)