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. 修复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
相关产品推荐
相关产品推荐

