macOS版homebrew+VScode配置opencv(c/c++)亲测可用

之前在win10的vscode上搭建过opencv环境,这次试了下Mac下的,虽然踩坑不少,但最终还是成功了。下面是具体步骤:

一、Homebrew的安装

我试了官网下的安装代码,虽然能成功,但是速度很慢,而且有几个环境因为墙的原因,没有下载。最后我用的是清华大学的镜像。
教程可以参考:清华大学镜像安装homebrew

二、利用Homebrew安装opencv

有三个步骤:

brew install wget
brew install cmake
brew install opencv

如果下载速度很慢,可以尝试连上手机热点等方式,避免在学校校园网环境下下载(有墙)。
如果卡在

Updating Homebrew...

这个界面,可以直接按ctrl+c跳过,不影响后续下载。而且若是下载过程中进度条卡住了,可以ctrl+z终止,然后重新输入一下指令,会接着上次的断点继续下载。

检查安装结果

brew info opencv

输出如下:
opencv安装结果
如果有打红叉的,说明那个没有被安装,可以单独对他用一下brew install

三、配置VScode+opencv

Vscode配置c/c++环境在这里就不多说了,网上有很多。这里贴出我的四个json文件代码:

1.c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**",
                "/Library/Developer/CommandLineTools/usr/include/c++/v1",
                "/usr/local/include",
                "/Library/Developer/CommandLineTools/usr/lib/clang/9.0.0/include",
                "/usr/local/Cellar/opencv/4.2.0_1/include",
                "/usr/local/Cellar/opencv/4.2.0_1/lib",
                "/usr/local/Cellar/opencv/4.2.0_1/include/opencv4",
                "/Library/Developer/CommandLineTools/usr/include",
                "/usr/include",
            ],
            "defines": [],
            "macFrameworkPath": [
                "/System/Library/Frameworks",
                "/Library/Frameworks"
            ],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

2.launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "c/c++ Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "lldb",
            "preLaunchTask": "c++"
        }
    ]
}

3.tasks.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "c++",
            "command": "clang++",
            "type": "shell",
            "args": [
                "${file}",
                "-std=c++11",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.out",
                "-I",
                "/usr/local/Cellar/opencv/4.2.0_1/include/opencv4/opencv",
                "-I",
                "/usr/local/Cellar/opencv/4.2.0_1/include/opencv4",
                "-L",
                "/usr/local/Cellar/opencv/4.2.0_1/lib",
                "-l",
                "opencv_gapi",
                "-l",
                "opencv_stitching",
                "-l",
                "opencv_aruco",
                "-l",
                "opencv_bgsegm",
                "-l",
                "opencv_bioinspired",
                "-l",
                "opencv_ccalib",
                "-l",
                "opencv_dnn_objdetect",
                "-l",
                "opencv_dnn_superres",
                "-l",
                "opencv_dpm",
                "-l",
                "opencv_highgui",
                "-l",
                "opencv_face",
                "-l",
                "opencv_freetype",
                "-l",
                "opencv_fuzzy",
                "-l",
                "opencv_hfs",
                "-l",
                "opencv_img_hash",
                "-l",
                "opencv_line_descriptor",
                "-l",
                "opencv_quality",
                "-l",
                "opencv_reg",
                "-l",
                "opencv_rgbd",
                "-l",
                "opencv_saliency",
                "-l",
                "opencv_sfm",
                "-l",
                "opencv_stereo",
                "-l",
                "opencv_structured_light",
                "-l",
                "opencv_phase_unwrapping",
                "-l",
                "opencv_superres",
                "-l",
                "opencv_optflow",
                "-l",
                "opencv_surface_matching",
                "-l",
                "opencv_tracking",
                "-l",
                "opencv_datasets",
                "-l",
                "opencv_text",
                "-l",
                "opencv_dnn",
                "-l",
                "opencv_plot",
                "-l",
                "opencv_videostab",
                "-l",
                "opencv_videoio",
                "-l",
                "opencv_xfeatures2d",
                "-l",
                "opencv_shape",
                "-l",
                "opencv_ml",
                "-l",
                "opencv_ximgproc",
                "-l",
                "opencv_video",
                "-l",
                "opencv_xobjdetect",
                "-l",
                "opencv_objdetect",
                "-l",
                "opencv_calib3d",
                "-l",
                "opencv_imgcodecs",
                "-l",
                "opencv_features2d",
                "-l",
                "opencv_flann",
                "-l",
                "opencv_xphoto",
                "-l",
                "opencv_photo",
                "-l",
                "opencv_imgproc",
                "-l",
                "opencv_core",
                "-g"
            ],
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared"
            }
        }
    ]
}

中间那特别长的一溜通过指令获得:

pkg-config --cflags --libs opencv4

得到如下结果:
链接器结果
值得注意的是,在arg[]里面有一句

"args": [
                "${file}",
                ....
        ]

这个${file}能避免每次编译运行都要更改program名字的繁琐

settings.json

{
    "python.pythonPath": "/Users/yunyi/opt/anaconda3/bin/python",
    //settings.json
    "code-runner.executorMap": {
        "c": "cd $dir && make  && ./$fileNameWithoutExt && make clean",
        "cpp": "cd $dir && make  && ./$fileNameWithoutExt && make clean"
    },
    "editor.renderWhitespace": "all",
    "editor.renderLineHighlight": "all",
    "editor.formatOnSave": true,
    "code-runner.runInTerminal": true,
    "code-runner.ignoreSelection": true,
    "code-runner.enableAppInsights": false,
    "C_Cpp.updateChannel": "Insiders",
    "[makefile]": {
        "editor.insertSpaces": true
    },
    "C_Cpp.default.includePath": [
        "/usr/local/Cellar/opencv/4.2.0_1/include"
    ]
}

四、测试

代码:

#include <iostream>
#include <opencv4/opencv2/core.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;
using namespace std;
int main()
{
    cout << "nihao" << endl;
    Mat img = imread("/Users/yunyi/Desktop/timg.jpeg", IMREAD_GRAYSCALE);
    imshow("imgIuput", img);
    waitKey(0);
    destroyAllWindows();
    return 0;
}

输出:
自己找的图
命令行输出
如果发生头文件无法打开的情况,看一下你的包含路径includePath有没有错,以及刚才那一大溜有没有错
包含路径设置

参考:https://www.cnblogs.com/shyw/p/11634553.html

  • 5
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 26
    评论
### 回答1: 要在Mac M1上配置C++环境,可以按照以下步骤进行操作: 1. 安装Xcode:在Mac App Store中下载并安装Xcode,它包含了C++编译器和其他开发工具。 2. 安装Homebrew:打开终端,运行以下命令安装Homebrew: ``` /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` 3. 安装GCC:在终端中运行以下命令安装GCC: ``` brew install gcc ``` 4. 配置VSCode:打开VSCode,安装C/C++插件。在VSCode中打开C++文件,按下F1键,输入“C++:Edit Configurations”,选择“C++(GDB/LLDB)”作为调试器。 5. 配置任务:在VSCode中按下F1键,输入“Tasks:Configure Task”,选择“C++:g++ build active file”,然后按照提示进行配置。 6. 编译运行:在VSCode中按下F5键,编译并运行C++程序。 以上是在Mac M1上配置C++环境的步骤,希望对您有所帮助。 ### 回答2: 首先,在Mac M1上配置C语言开发环境需要以下几个步骤: 1.安装Xcode工具并勾选Command Line Tools 2.安装homebrew管理器 3.安装LLVM编译器 4.安装Visual Studio Code(VSCode) 5.安装C/C++插件和Code Runner插件 接下来,我们将详细介绍这些步骤: 1.安装Xcode工具并勾选Command Line Tools Xcode是苹果公司开发的一款集成开发环境,可以编写IOS、MacOS和其他苹果相关软件。在Mac下开发C语言,我们需要Xcode工具中的Command Line Tools,因此在安装Xcode的过程中,需要勾选Command Line Tools。 2.安装homebrew管理器 homebrew是Mac系统上一款非常好用的包管理器,可以用来安装和卸载各种软件包,包括LLVM编译器和VSCode等软件。在终端输入以下指令安装homebrew: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 3.安装LLVM编译器 Mac系统自带的Clang编译器已经可以编译C语言程序,但为了更好的编译效果和调试支持,我们可以使用LLVM,输入以下指令安装: brew install llvm 安装完成后,我们可以使用命令“which clang”来查看LLVM是否安装成功。 4.安装Visual Studio Code(VSCodeVSCode是一款由微软开发的轻量级代码编辑器,提供了丰富的插件和扩展,可以满足我们进行C语言开发所需的各种功能。在VSCode的官网上下载安装包并安装即可。 5.安装C/C++插件和Code Runner插件 在VSCode中,我们需要安装C/C++插件和Code Runner插件来加强对C语言的支持和调试功能。在VSCode的Extensions界面搜索并安装即可。 以上就是在Mac M1上配置C语言开发环境的步骤。需要注意的是,在使用LLVM编译器时,需要将其添加到环境变量中,可以通过修改.bash_profile文件并添加“export PATH="/usr/local/opt/llvm/bin:$PATH"”来实现。 ### 回答3: 首先,需要下载并安装适用于 M1 芯片的 Xcode。可以在 App Store 中搜索并安装。这是因为在 M1 芯片上编译 C 语言需要使用 Clang 编译器,而 Clang 是由 Xcode 提供的。 安装完 Xcode 后,需要安装 HomebrewHomebrew 是 Mac 上一个常用的包管理器。打开终端,输入以下命令即可安装 Homebrew: ``` /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` 安装完 Homebrew 后,再输入以下命令安装 Clang 编译器: ``` brew install clang ``` 安装完 Clang 后,需要打开 VS Code。可以在 VS Code 搜索框中输入 C/C++,找到官方提供的 C/C++ 扩展,点击安装。安装完成后,需要打开 VS Code 的设置,找到 C/C++ 扩展的配置项。 在 C/C++ 扩展配置项中,需要设置 C/C++ 编译器路径。配置方法如下: 找到 “C_Cpp:Default:clang++ Path” 配置项,将其设置为 Clang 编译器的路径。 默认情况下,Clang 编译器的路径如下: ``` /usr/local/Cellar/llvm/13.0.0/bin/clang++ ``` 需要根据自己的 Clang 编译器安装路径进行设置。 在配置好 C/C++ 编译器路径后,就可以在 VS Code 中编写并运行 C 语言程序了。新建一个 C 语言文件,输入代码后,可以按 F5 键编译运行程序,或者在终端中输入以下命令进行编译运行: ``` clang file.c -o file && ./file ``` 其中,file.c 是 C 语言源文件名,file 是编译后的程序名。 最后,需要注意的是,在 M1 芯片上编译 C 语言时,需要使用 -arch arm64 标志指定编译架构。例如,使用 Clang 编译 hello.c 程序时,需要输入以下命令: ``` clang -arch arm64 -o hello hello.c ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

々云逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值