Mac Clion OpenCV 报错: unknown target 'Hello',如何解决?

问题1:
我看别的帖子里用的opencv的地址都是: /usr/local/Cellar/opencv
为什么我的是: /opt/homebrew/Cellar/opencv
这个有区别吗?

问题2:
这个报错是为什么

img

基于Monster 组和GPT的调写:
对于问题1,这个可能是由于你的操作系统或者Homebrew的版本不同导致的。两个地址实际上是相同的,只是安装路径略有不同。因此,没有什么区别。

对于问题2,这个错误可能是由于你的CLion项目没有正确配置编译器或者缺少了必要的库文件。具体来说,如果你使用OpenCV库,需要在项目的CMake配置文件中添加相应的链接库信息。你可以在CMakeLists.txt文件中添加类似以下的代码:

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(Hello ${OpenCV_LIBS})


对于问题1,这个可能是由于你的操作系统或者Homebrew的版本不同导致的。两个地址实际上是相同的,只是安装路径略有不同。因此,没有什么区别。

对于问题2,这个错误可能是由于你的CLion项目没有正确配置编译器或者缺少了必要的库文件。具体来说,如果你使用OpenCV库,需要在项目的CMake配置文件中添加相应的链接库信息。你可以在CMakeLists.txt文件中添加类似以下的代码:

scss

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(Hello ${OpenCV_LIBS})

其中,Hello是你的项目名称,需要替换成你实际的项目名称。这段代码会告诉CMake查找OpenCV库,并将其链接到你的项目中。

另外,你还需要确保你的编译器能够正确地找到OpenCV库的位置。如果你的OpenCV库安装在非默认路径下,你可以通过设置环境变量LD_LIBRARY_PATH或者在CMake配置文件中设置OpenCV_DIR变量来告诉编译器库的位置。

Mac(m1) clion编译opencv报错building for macOS-x86_64 but attempting to link with file built for macOS-ar

可以借鉴下
https://blog.csdn.net/gp18391818575/article/details/126553784

引用chatGPT作答,
对于问题1,路径不同可能是因为您使用的是不同的操作系统或者不同的版本管理工具(例如 Homebrew)。不同的路径可能会影响您在编译和链接时所需要的库的位置,但这通常可以通过在您的项目设置中进行相应更改来解决。

对于问题2,'unknown target 'Hello'' 错误通常是因为您的 CLion 项目没有正确配置,或者缺少必要的库和依赖项。建议您按照以下步骤解决此问题:

1.确认您已经正确地安装了 OpenCV,并且已经将其包含路径和库路径添加到了您的项目设置中。

2.检查您的 CLion 项目设置,确保您已经正确地设置了目标名称和编译器选项。

3.如果问题仍然存在,建议您检查您的 CMakeLists.txt 文件是否正确地配置了 OpenCV 的库和依赖项,并且目标名称与您在 CLion 中设置的名称匹配。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
问题1:
这个路径的差异是因为不同的人安装OpenCV的方式不同,你安装了一个使用Homebrew的版本。
在这种情况下,只要在你的CMakeLists.txt中设置正确的路径就可以了。

问题2:
"Unknown target 'Hello'"通常是由CMakeLists.txt中的语法错误引起的,它找不到名为'Hello'的目标。

以下是一个简单的OpenCV C++示例程序:

#include <opencv2/opencv.hpp>

using namespace cv;

int main(){
    Mat image = imread("image.jpg");
    imshow("Image", image);
    waitKey(0);
    return 0;
}

以下是一个CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.17)

project(opencv_example)

find_package(OpenCV REQUIRED)

add_executable(Hello main.cpp)

target_link_libraries(Hello ${OpenCV_LIBS})

这个CMakeLists.txt将OpenCV链接到名为'Hello'的目标上。确保你的CMakeLists.txt设置正确了你的OpenCV路径,并使用正确的目标名称来链接库。

例如,在你的计算机上,你的OpenCV路径可能是'/opt/homebrew/Cellar/opencv/4.5.2_4'。在你的CMakeLists.txt中,你可以这样设置OpenCV路径:

set(OpenCV_DIR "/opt/homebrew/Cellar/opencv/4.5.2_4/share/OpenCV")

请注意,OpenCV版本号可能是不同的,所以确保在设置路径时使用正确的版本号。
如果我的回答解决了您的问题,请采纳!

--target后面除非是特定的命令,不然应该是个路径才是你想要的目标吧,你这么写相当于默认是命令,但是命令中没有hello这个命令。你把Hello前面的路径加上去看下。
具体命令你可以像他提示的那样,在--target后面换成help可以查看有哪些命令和相应的作用。
也就是

cmake --build xxxx --target help
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    很抱歉,我作为AI语言模型无法完成您的要求,因为我无法进行代码的实际运行和测试。建议您参考以下步骤:

    1. 确认您已经正确安装了Clion和OpenCV,且OpenCV的版本与Clion兼容。

    2. 确认您的代码没有错误,可以使用其他编译器或者编辑器进行编译和运行,以确定问题是否在代码本身。

    3. 确认您在Clion中设置了正确的Build Configuration和Target。

    4. 如果以上步骤都正确,那么尝试使用以下命令更新和重装OpenCV:

    brew update brew uninstall opencv brew install opencv

    1. 关于两个不同的路径,可能是由于使用不同的包管理工具安装OpenCV导致的。如果您使用的是Homebrew,那么应该使用路径/opt/homebrew/Cellar/opencv;如果是MacPorts,则应该使用路径/usr/local/Cellar/opencv。两种工具的差别在于它们管理软件包的方式不同,但对于本问题而言,路径不同不影响解决方法。

    如果以上方法都不能解决问题,建议您在相关技术论坛或者官方支持渠道寻求帮助。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^