提问人:Jake 提问时间:7/29/2023 更新时间:7/29/2023 访问量:283
VS Code 包括 C++ 的 Homebrew 安装包的路径问题
VS Code includePath issues with Homebrew installed packages for C++
问:
尝试学习 C++,所以我必须安装库,但是这些库被 VScode 找到。
我通过 Homebrew 安装了其中一些,因为这是最简单的入门方法,因为我以前曾将 Homebrew 用于 Python。
现在,当我尝试运行以下程序(来自 mlpack 的示例)时
#include<armadillo>
#include<mlpack>
using namespace mlpack;
int main()
{
// Load the data from data.csv (hard-coded). Use CLI for simple command-line
// parameter handling.
arma::mat data("0.339406815,0.843176636,0.472701471; \
0.212587646,0.351174901,0.81056695; \
0.160147626,0.255047893,0.04072469; \
0.564535197,0.943435462,0.597070812");
data = data.t();
// Use templates to specify that we want a NeighborSearch object which uses
// the Manhattan distance.
NeighborSearch<NearestNeighborSort, ManhattanDistance> nn(data);
// Create the object we will store the nearest neighbors in.
arma::Mat<size_t> neighbors;
arma::mat distances; // We need to store the distance too.
// Compute the neighbors.
nn.Search(1, neighbors, distances);
// Write each neighbor and distance using Log.
for (size_t i = 0; i < neighbors.n_elem; ++i)
{
std::cout << "Nearest neighbor of point " << i << " is point "
<< neighbors[i] << " and the distance is " << distances[i] << "." << std::endl;
}
return 0;
}
这只是从 mlpack 示例中复制和粘贴,以查看我是否正确安装了所有内容。但是,如前所述,我收到致命错误,即找不到 mlpack 和 amrmadillo 包。我已经为包含行尝试了不同的变体
mlpack, mlpack.hpp, mlpack/core.hpp
但这些也不起作用。我是使用 C++ 和编译语言的新手,所以我怀疑我错过了一些关键信息。从我收集到的信息来看,如果您想提供帮助,以下将是重要信息。
VSCode: c_cpp_properties.json (我已经手动放入包含包的 Homebrew 目录)
{
"configurations": [
{
"name": "Mac",
"includePath": [
"/opt/homebrew/lib/**",
"/opt/homebrew/Cellar",
"/opt/homebrew/Cellar/armadillo/12.6.1",
"/opt/homebrew/Cellar/mlpack/4.2.0/include",
"/opt/homebrew/include",
"/opt/homebrew/Cellar/cereal/1.3.2/include",
"/opt/homebrew/Cellar/ensmallen/2.19.1/include"
],
"defines": [],
"macFrameworkPath": [
"/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
],
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "macos-gcc-arm64",
"compilerPath": "/opt/homebrew/bin/g++-13"
}
],
"version": 4
}
VSCode:tasks.json(tbh我只明白这是做什么的,但我认为这是发现的,因为该命令与我的编译器路径匹配)
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
},
{
"type": "cppbuild",
"label": "C/C++: g++-13 build active file",
"command": "/opt/homebrew/bin/g++-13",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
摘自与 CPP 相关的设置:
"window.zoomLevel": 1,
"cmake.configureOnOpen": true,
"C_Cpp.default.enableConfigurationSquiggles": false,
"C_Cpp.default.compilerPath": "/opt/homebrew/bin/g++-13"
}
我还要注意,有两个编译器选项可供我选择使用
“/opt/homebrew/bin/g++-13” - 列为我当前的编译器路径 和 “/opt/homebrew/bin/gcc-13”
我选择哪一个并不重要。我是否使用“clang”、“clang++”、“gcc”或“g++”(未随自制软件一起安装)也没关系
我也没有设置configurationProvider。在另一种在线形式中,这似乎很重要 - 我的是默认的。不确定这对我的情况是否意味着什么。
据我所知,也许我错过了 Cmake 或 make 工具。但是,根据我的理解,自制软件应该解决这个问题和/或只有当我从源代码手动构建代码时才需要这样做。
如果您有资源,我应该注意了解此过程或此过程的任何部分,我也将不胜感激。
顺便说一句 - 我正在 Ventura 13.4.1 上使用 M1 Apple Silicon。尽管有些人可能从自制路径中的“选择”中推断出这一点,但显然这是苹果硅的东西?
我尝试了以下方法:
- 更改 include 语句中的文件名,用于不同的内容,如 mlpack.hpp、mlpack/core、mlpack/core.hpp 等,其中包含不同的变体
- 添加到 VScode 包含路径 - 在此之前,includePath 为空
- 更改编译器路径
- (1)、(2)、(3) 的各种变体 - 尽管选项的多样性很大,所以我没有尝试过每一种组合
- 重新启动计算机
- 完全退出 VSCode
- 许多 Google 搜索 - 这是进行许多 (1)、(2) 、(3) 更改的地方
多次阅读这些帖子中的许多内容,因为我必须获取词汇的上下文。还有更多与我的问题无关的问题。(1)https://github.com/microsoft/vscode-cpptools/issues/8377
(2)https://github.com/orgs/Homebrew/discussions/868
(3) 如何在 Visual Studio Code 中链接到使用 Homebrew 下载的库?
(4) VScode Mac“找不到/opt/homebrew” vscode 如何通过 HomeBrew 在我的 Mac 上安装 leveldb
(5) 以下链接似乎很有帮助,但我不太清楚响应者在说什么 https://www.reddit.com/r/cpp_questions/comments/102gbll/how_to_use_brew_installed_library_in_vs_code/
(6)这个是关于python的,但有些有用 https://www.reddit.com/r/learnprogramming/comments/11p1m35/troubleshooting_path_issues_with_python_on_visual/
答: 暂无答案
评论