VS2019 CMake编译OpenCV3.4.16时BUILD_opencv_world设置不生效
VS2019编译OpenCV3.4.16时BUILD_opencv_world配置不生效问题
已执行操作
- 选择 File->Open->Cmake 选项,加载项目根目录下的
CMakeLists.txt文件 - 项目加载完成后,右键点击 CMakeLists.txt->CMake Settings for OpenCV 进入配置页面
- 确认Visual Studio和CMake设置界面均选中 x64-Release 配置
- 下拉配置列表勾选 BUILD_opencv_world 选项,保存
CMakeSettings.json文件后等待CMake自动完成重新扫描与配置加载

问题现象
完成项目构建后,x64-Release输出目录中未找到opencv_world.dll与opencv_world.lib文件,仅生成其他模块的DLL,配置未生效。
已尝试的修复操作均无效:
- 执行 CMakeLists.txt->Cache->Delete 清除缓存
- 在
CMakeLists.txt顶部添加set(BUILD_opencv_world ON)语句强制开启配置
遗漏操作与修复方法
你漏掉了手动触发完整CMake缓存生成、并确认opencv_world目标被纳入构建范围的步骤,VS2019内置CMake的自动重扫描仅会更新配置项记录,不会主动解析opencv_world模块的子目录构建规则,具体补全操作:
- 打开CMake设置页面,勾选完BUILD_opencv_world后,不要只等自动扫描,点击页面顶部的
保存并生成缓存按钮,等待CMake完整跑完配置流程,输出日志里要能看到World module is enabled的提示才算配置成功 - 缓存生成完成后,切换到CMake目标视图(在解决方案资源管理器顶部切换视图下拉框选「CMake目标视图」),找到
opencv_world目标,右键选择「生成」,不要直接点全局生成,全局生成默认不会包含未在首次配置时启用的新增目标 - 如果单独生成opencv_world时报错找不到依赖,检查配置项
BUILD_SHARED_LIBS是否为ON,OFF状态下只会生成静态库不会输出dll;同时确认你没有勾选BUILD_opencv_python之类和world模块冲突的绑定项,这类项会导致world模块编译被跳过。 - 编译完成后不要只看中间输出目录,去你在CMake中配置的
CMAKE_INSTALL_PREFIX路径下的bin和lib文件夹找最终生成的库,VS的CMake临时输出目录不会自动拷贝world库到根级输出目录。
内容的提问来源于stack exchange,提问作者Mich
相关产品推荐
相关产品推荐

