我遇到了一个问题,试图在我的Mac(Yosemite与Xcode 6)上使用CMake与Unix风格Makefiles和vim与youcompleteme插件建立一个C++项目(我是Linux老兵和Mac新手,所以我更喜欢这个设置到Xcode)。该代码的构建和运行,但你完成我抛出一些虚假的错误,我认为它不能找到<cstdint>标题。vim youcompleteme无法找到cstdint
我刚刚在Linux上尝试过它,并且遇到同样的问题。
我配置了.ycm_extra_conf.py来使用cake生成的compile_commands.json。在compile_commands.json的“命令”行使用这些标志:
"command": "/usr/bin/c++ -std=c++11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks -I/usr/local/include -I/Users/tony/Dev/cow/jni -I/Users/tony/Library/Frameworks/SDL2.framework/Headers -Wall -Wextra -Wunused -F/Users/tony/Library/Frameworks -o ...
似乎没有被明确提及有包含stdint作为直接父任何目录。
有没有一种方法可以让你完全用libclang来做它的东西,使得它可以隐式地找到目录,这似乎在命令行上运行C++时起作用?或者,让cmake添加一个合适的系统头部路径而不硬接线的最好方法是什么?我希望我的CMakeLists.txt是可移植的,并且能够应对工具链升级。
我的.ycm_extra_conf.py几乎是提供的示例的副本,稍微修改以找到compile_commands.json放在哪里。
您可以向我们提供您'.ycm_extra_conf.py'文件,并告诉我们一些关于你如何组织你的项目。 – ladislas
我已经将.ycm_extra_conf添加到了我原来的问题中,因为它太长了,无法进行单独的评论。这与插件提供的示例非常相似,我只是更改了它找到compilation_database_folder的位(并在此处粘贴之前删除了注释)。我认为这是找到数据库文件确定,因为有一次我将final_flags转储到一个文件中,发现它包含了compile_commands.json中的东西,但不包含此脚本中的硬连线标志。 – realh
我的项目布置了两个与此问题相关的主要子目录。一个叫做jni(预期移植到Android)包含我所有的源文件,另一个叫做build-make,它是cmake的工作目录。 – realh