我目前正在一个C++项目上使用柯南,使用sqlite_orm作为依赖项。当使用我的个人包含(如myClass.hpp)Visual Studio代码能够提供自动完成,但与柯南的包含,没有自动完成是可能的。我正在寻找一种方法来链接柯南的包含路径到我的VSCode,你知道吗?
sqlite_orm
myClass.hpp
dm7nw8vv1#
在项目的.vscode/c_cpp_properties.json文件中添加以下行"includePath": ["${workspaceFolder}/**", "~/.conan/data/**"]
.vscode/c_cpp_properties.json
"includePath": ["${workspaceFolder}/**", "~/.conan/data/**"]
cygmwpex2#
将set(CMAKE_EXPORT_COMPILE_COMMANDS ON)添加到您的CMakeLists.txt(或添加到cmake:cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..),因此将产生build/compile_commands.json。VS代码(clion等)可以利用此文件来支持自动完成:
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
build/compile_commands.json
$ cat .vscode/c_cpp_properties.json { "configurations": [ { "name": "Linux", "defines": [], "compilerPath": "/usr/bin/g++", "cStandard": "c11", "cppStandard": "c++14", "intelliSenseMode": "clang-x64", "compileCommands": "${workspaceFolder}/build/compile_commands.json" } ], "version": 4 }
b5buobof3#
Conan还没有为vscode提供扩展,但是你可以尝试一下:https://github.com/FIREFOXCYBER/conan-tools-vs-code在市场上有售。否则,您可以在设置中手动添加软件包文件夹路径(例如~/.conan/data/package/version/package/package_id/include)。
~/.conan/data/package/version/package/package_id/include
toiithl64#
在VSCode的设置中搜索之后,我发现您可以更改包含在c_cpp_properties.json文件中的路径,该文件可以在您的.vscode文件夹中找到通过在includePath字段中添加所需路径,可以选择自己的包含路径
c_cpp_properties.json
.vscode
includePath
cygmwpex5#
我想补充的是,您也可以使用.vscode/settings.json文件作为.vscode/c_cpp_properties.json的替代文件。例如,我刚刚建立了一个项目:
.vscode/settings.json
{ "C_Cpp.clang_format_path": "/usr/lib/llvm-10/bin/clang-format", "C_Cpp.default.includePath": [ "~/.conan/data/**" ], }
wfauudbj6#
最近我也陷入了类似的困境,那些红色的曲线让人抓狂,社区扩展提供了一个很好的按钮来运行“conan install”和“conan build”,但是它不能帮助链接intellisense。VS的default C++ plugin代码的智能感知从${PROJECT_ROOT}/.vscode/c_cpp_properties.json中获取搜索头文件的路径列表,而Conan将其包头文件分散在home/user目录下的不同文件夹中。我最后只写了一个python脚本,每次运行“conan install”时,都会将标题位置从www.example.com中的元数据复制conanfile.py到c_cpp_properties. json。我试着把PyPI上的可重用位捆绑在一起:https://pypi.org/project/parktoma-vscconan/1.0.1/但这对我来说真的是权宜之计。IMO,正确的做法是让社区扩展执行相同的步骤,所有这些步骤都很好地集成到IDE中。但这现在起作用了,希望能有所帮助。
qco9c6ql7#
dvorak4tzx和spanishgum的答案的组合,再加上VS Code的Customizing default settings选项,得到以下选项:通过添加到CMakeLists.txt生成build/compile_commands.json eiter:
或在命令行中:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
然后插入.vscode/settings.json:
"C_Cpp.default.compileCommands": "${workspaceFolder}/build/compile_commands.json",
注意:我遇到了麻烦,如果
"configurationProvider": "ms-vscode.cmake-tools"
是c_cpp_properties.json的一部分。如果没有它,IntelliSense将按预期工作。我认为"includePath": ["${workspaceFolder}/**", "~/.conan/data/**"]并不是理想的,因为在~/.conan/data之下,每个库可能有许多版本。资料来源:
~/.conan/data
7条答案
按热度按时间dm7nw8vv1#
在项目的
.vscode/c_cpp_properties.json
文件中添加以下行"includePath": ["${workspaceFolder}/**", "~/.conan/data/**"]
cygmwpex2#
将
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
添加到您的CMakeLists.txt(或添加到cmake:cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
),因此将产生build/compile_commands.json
。VS代码(clion等)可以利用此文件来支持自动完成:
b5buobof3#
Conan还没有为vscode提供扩展,但是你可以尝试一下:
https://github.com/FIREFOXCYBER/conan-tools-vs-code
在市场上有售。
否则,您可以在设置中手动添加软件包文件夹路径(例如
~/.conan/data/package/version/package/package_id/include
)。toiithl64#
在VSCode的设置中搜索之后,我发现您可以更改包含在
c_cpp_properties.json
文件中的路径,该文件可以在您的.vscode
文件夹中找到通过在
includePath
字段中添加所需路径,可以选择自己的包含路径cygmwpex5#
我想补充的是,您也可以使用
.vscode/settings.json
文件作为.vscode/c_cpp_properties.json
的替代文件。例如,我刚刚建立了一个项目:
wfauudbj6#
最近我也陷入了类似的困境,那些红色的曲线让人抓狂,社区扩展提供了一个很好的按钮来运行“conan install”和“conan build”,但是它不能帮助链接intellisense。
VS的default C++ plugin代码的智能感知从${PROJECT_ROOT}/.vscode/c_cpp_properties.json中获取搜索头文件的路径列表,而Conan将其包头文件分散在home/user目录下的不同文件夹中。
我最后只写了一个python脚本,每次运行“conan install”时,都会将标题位置从www.example.com中的元数据复制conanfile.py到c_cpp_properties. json。
我试着把PyPI上的可重用位捆绑在一起:https://pypi.org/project/parktoma-vscconan/1.0.1/
但这对我来说真的是权宜之计。IMO,正确的做法是让社区扩展执行相同的步骤,所有这些步骤都很好地集成到IDE中。但这现在起作用了,希望能有所帮助。
qco9c6ql7#
dvorak4tzx和spanishgum的答案的组合,再加上VS Code的Customizing default settings选项,得到以下选项:
通过添加到CMakeLists.txt生成
build/compile_commands.json
eiter:或在命令行中:
然后插入
.vscode/settings.json
:注意:我遇到了麻烦,如果
是
c_cpp_properties.json
的一部分。如果没有它,IntelliSense将按预期工作。我认为
"includePath": ["${workspaceFolder}/**", "~/.conan/data/**"]
并不是理想的,因为在~/.conan/data
之下,每个库可能有许多版本。资料来源: