windows 搭建cmake和gcc编译环境 问题记录

本文介绍了如何解决在使用CMake配置项目时遇到的错误,包括环境变量设置、编译器选择及清理缓存等问题。
  1. 增加cmake或者gcc的环境变量不能立即生效可以在命令行执行

    set PATH=C:\Software\cmake\bin;C:\MinGW\bin\;
    

    临时添加PATH 不必重启电脑

  2. 在build目录下执行命令: cmake … 错:

    D:\test_argtable3\build>cmake ..
    -- Building for: NMake Makefiles
    CMake Error at CMakeLists.txt:5 (project):
      Running
    
       'nmake' '-?'
    
      failed with:
    CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
    CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
    -- Configuring incomplete, errors occurred!
    See also "D:/test_argtable3/build/CMakeFiles/CMakeOutput.log".
       系统找不到指定的文件。
    

    问题是因为cmake默认使用windows的nmake程序(本机没有所以提示找不到nmake),因此需要指明cmake要生成mingw make使用的makefile文件:cmake -G"MinGW Makefiles" …
    但是又有报错

  3. 使用正确命令却提示失败

    D:\test_argtable3\build>cmake -G"MinGW Makefiles" ..
    CMake Error: Error: generator : MinGW Makefiles
    Does not match the generator used **previously: NMake** Makefiles
    Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory.
    

    cmake会在前次执行结果文件的基础上直接执行,但是发现上次用的是NMake,与本次指定的MinGW不一致,所以报错,解决方法:将build目录的生成文件全部删除,再次执行ok

### 如何在使用 GCC 的环境下配置安装 OpenCV #### 准备工作 为了确保顺利编译并链接 OpenCV,在包含 GCC 的环境中需先确认已安装必要的依赖项。通常这些包可以通过系统的包管理器来获取,对于基于 Red Hat 的系统如 CentOS 8 可以通过 `yum` 或者更推荐的 `dnf` 来完成。 ```bash sudo dnf install epel-release sudo dnf builddep opencv ``` 上述命令会自动处理大部分构建所需的库文件其他资源[^1]。 #### 下载源码 前往官方 GitHub 页面下载最新版本的 OpenCV 源代码压缩包,并解压到本地目录下: ```bash cd /path/to/your/directory/ wget -O opencv.zip https://github.com/opencv/opencv/archive/<tag>.zip unzip opencv.zip ``` 请注意替换 `<tag>` 为实际想要使用的标签名或分支名称。 #### 编译环境搭建 创建一个新的子目录用于存放编译过程中产生的临时文件以及最终生成的目标文件,进入该目录执行 CMake 命令来进行项目配置。这里假设已经预先设置了 C++ 编译工具链指向 GCC 版本。 ```bash mkdir -p build && cd build cmake .. make -j$(nproc) sudo make install ``` 其中 `-DCMAKE_BUILD_TYPE=Release` 其他选项可以根据个人需求调整;而 `-j$(nproc)` 参数则允许利用多核处理器加速整个过程[^3]。 #### 验证安装成功与否 一旦所有操作都顺利完成之后,可以尝试调用如下指令测试是否能够正常读取到所期望的 OpenCV 库版本号: ```bash pkg-config --modversion opencv4 ``` 如果一切无误,则应该返回当前安装好的具体版本信息。 #### 使用示例 下面给出一段简单的例子展示怎样编写一个基本的应用程序去加载图像数据并通过窗口显示出来。此部分涉及到 Qt 开发框架中的组件集成情况,请参见给定资料中关于 CMakeLists.txt 文件的具体说明[^2]. ```cpp #include <iostream> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main(int argc, char** argv ) { if (argc != 2){ cout <<" Usage: display_image ImageToLoadAndDisplay" << endl; return -1; } Mat image; image = imread(argv[1], IMREAD_COLOR); // Read the file if(image.empty()) // Check for invalid input { cout << "Could not open or find the image" << std::endl ; return -1; } namedWindow( "Display window", WINDOW_AUTOSIZE );// Create a window for display. imshow( "Display window", image ); // Show our image inside it. waitKey(0); // Wait indefinitely until keypress... destroyAllWindows(); // Destroy all windows before exiting program return 0; } ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值