You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows11下VSCode配置OpenCV C++(CMake)出错求助

Windows 11下VSCode中OpenCV C++开发CMake配置问题

我在Windows 11系统的VSCode里做OpenCV C++开发,已经装好了编译器和构建工具。用下面的CMakeLists.txt调试程序时,就算手动在c_cpp_properties.json里设置了头文件路径,还是检测不到OpenCV的头文件库。

我的CMakeLists.txt代码

cmake_minimum_required(VERSION 3.0.0)
project(myopencv VERSION 0.1.0)

include(CTest)
enable_testing()
find_package(OpenCV REQUIRED)
include_directories($(OpenCV_DIR\include\opencv2))
include_directories($(OpenCV_DIR\x64\vc16\lib))
add_executable(myopencv main.cpp)
target_link_libraries(myopencv $OPENCV_LIBS)
#INCLUDE_DIRECTORIES($(OpenCV_DIR\x64\vc16\lib))
#add_library(OPENCV_LIBS $(OpenCV_DIR\x64\vc16\lib))

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

CMake配置错误日志

[main] Configuring folder: opencv2 
[proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=C:\cygwin64\bin\x86_64-pc-cygwin-gcc.exe -DCMAKE_CXX_COMPILER:FILEPATH=C:\cygwin64\bin\x86_64-pc-cygwin-g++.exe -Sc:/Users/Mehrdad/Documents/PlatformIO/Projects/opencv2 -Bc:/Users/Mehrdad/Documents/PlatformIO/Projects/opencv2/build -G "Unix Makefiles"
[cmake] Not searching for unused variables given on the command line.
[cmake] -- The C compiler identification is GNU 10.2.0
[cmake] -- The CXX compiler identification is GNU 10.2.0
[cmake] -- Detecting C compiler ABI info
[cmake] -- Detecting C compiler ABI info - failed
[cmake] -- Check for working C compiler: C:/cygwin64/bin/x86_64-pc-cygwin-gcc.exe
[cmake] -- Check for working C compiler: C:/cygwin64/bin/x86_64-pc-cygwin-gcc.exe - broken
[cmake] CMake Error at C:/Program Files/CMake/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake:66 (message):
[cmake]   The C compiler
[cmake] 
[cmake]     "C:/cygwin64/bin/x86_64-pc-cygwin-gcc.exe"
[cmake] 
[cmake]   is not able to compile a simple test program.
[cmake] 
[cmake]   It fails with the following output:
[cmake] 
[cmake]     Change Dir: C:/Users/Mehrdad/Documents/PlatformIO/Projects/opencv2/build/CMakeFiles/CMakeTmp
[cmake]     
[cmake]     Run Build Command(s):C:/cygwin64/bin/make.exe cmTC_9053f/fast && /usr/bin/make  -f CMakeFiles/cmTC_9053f.dir/build.make CMakeFiles/cmTC_9053f.dir/build
[cmake]     make[1]: Entering directory '/cygdrive/c/Users/Mehrdad/Documents/PlatformIO/Projects/opencv2/build/CMakeFiles/CMakeTmp'
[cmake]     Building C object CMakeFiles/cmTC_9053f.dir/testCCompiler.c.obj
[cmake]     C:/cygwin64/bin/x86_64-pc-cygwin-gcc.exe    -o CMakeFiles/cmTC_9053f.dir/testCCompiler.c.obj -c C:/Users/Mehrdad/Documents/PlatformIO/Projects/opencv2/build/CMakeFiles/CMakeTmp/testCCompiler.c
[cmake]     Linking C executable cmTC_9053f.exe
[cmake]     "C:/Program Files/CMake/bin/cmake.exe" -E rm -f CMakeFiles/cmTC_9053f.dir/objects.a
[cmake]     CMAKE_AR-NOTFOUND cr CMakeFiles/cmTC_9053f.dir/objects.a @CMakeFiles/cmTC_9053f.dir/objects1.rsp
[cmake]     make[1]: CMAKE_AR-NOTFOUND: No such file or directory
[cmake]     make[1]: *** [CMakeFiles/cmTC_9053f.dir/build.make:107: cmTC_9053f.exe] Error 127
[cmake]     make[1]: Leaving directory '/cygdrive/c/Users/Mehrdad/Documents/PlatformIO/Projects/opencv2/build/CMakeFiles/CMakeTmp'
[cmake] -- Configuring incomplete, errors occurred!
[cmake] See also "C:/Users/Mehrdad/Documents/PlatformIO/Projects/opencv2/build/CMakeFiles/CMakeOutput.log".
[cmake] See also "C:/Users/Mehrdad/Documents/PlatformIO/Projects/opencv2/build/CMakeFiles/CMakeError.log".
[cmake]     make: *** [Makefile:140: cmTC_9053f/fast] Error 2
[cmake]     
[cmake]     
[cmake] 
[cmake]   
[cmake] 
[cmake]   CMake will not be able to correctly generate this project.
[cmake] Call Stack (most recent call first):
[cmake]   CMakeLists.txt:2 (project)
[cmake] 
[cmake] 
[proc] The command: "C:\Program Files\CMake\bin\cmake.EXE" --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=C:\cygwin64\bin\x86_64-pc-cygwin-gcc.exe -DCMAKE_CXX_COMPILER:FILEPATH=C:\cygwin64\bin\x86_64-pc-cygwin-g++.exe -Sc:/Users/Mehrdad/Documents/PlatformIO/Projects/opencv2 -Bc:/Users/Mehrdad/Documents/PlatformIO/Projects/opencv2/build -G "Unix Makefiles" exited with code: 1 and signal: null 

问题截图

问题截图1
问题截图2
问题截图3
问题截图4


解决步骤

1. 修复C编译器链接问题

错误日志显示CMAKE_AR-NOTFOUND,说明CMake找不到Cygwin的归档工具ar.exe:

  • 打开Cygwin安装器,确保安装了binutils包(包含ar.exe)
  • 将Cygwin的bin目录(如C:\cygwin64\bin)移到系统环境变量PATH最前端,避免和Windows自带工具冲突

2. 修正CMakeLists.txt代码

原代码存在变量引用格式错误、冗余路径设置等问题,修正后版本:

cmake_minimum_required(VERSION 3.0.0)
project(myopencv VERSION 0.1.0)

include(CTest)
enable_testing()

# 自动查找OpenCV,CMake会处理头文件和库路径
find_package(OpenCV REQUIRED)

# 生成可执行文件
add_executable(myopencv main.cpp)

# 链接OpenCV库,自动关联头文件路径
target_link_libraries(myopencv PRIVATE ${OpenCV_LIBS})

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

3. 调整VSCode的c_cpp_properties.json

确保头文件路径和编译器配置正确:

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "${OpenCV_DIR}/include",
                "${OpenCV_DIR}/include/opencv2"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "C:/cygwin64/bin/g++.exe",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

4. 重新配置CMake

  • 删除旧的build目录
  • 在VSCode的CMake面板重新选择Cygwin的gcc/g++编译器
  • 重新运行CMake配置

内容的提问来源于stack exchange,提问作者mehrdad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:16:06