当前位置: 首页 > news >正文

Visual Studio 2022

编写完 FeatureExtraction 的 CMakeLists.txt 后,既可以用 Visual Studio 2022 图形化界面直接 Build,也可以用命令行运行—— 两者的核心逻辑一致(都是先通过 CMake 生成 VS 构建系统文件,再编译),仅操作方式和适用场景不同。

核心前提:CMake 的 “生成 - 编译” 两步流程

无论用哪种方式,CMake 的工作本质是 “生成构建系统”(而非直接编译):

  1. 配置阶段:CMake 解析 CMakeLists.txt,根据平台(Windows+VS2022)生成对应的构建文件(如 VS 的 .sln 解决方案、.vcxproj 项目文件)。
  2. 编译阶段:通过生成的构建文件,调用 VS 的编译器(cl.exe)完成编译、链接,生成库文件(.dll/.lib)。

方式一:Visual Studio 2022 图形化界面(推荐新手 / 调试场景)

VS2022 对 CMake 有原生支持,无需手动生成解决方案,可直接打开 CMakeLists.txt 进行配置和编译,操作更直观。

具体步骤

  1. 打开 CMake 项目启动 VS2022,点击「文件」→「打开」→「CMake」,选择 FeatureExtraction 目录下的 CMakeLists.txt

  2. 配置 CMake 项目VS 会自动触发 CMake 配置(右下角显示 “CMake 正在配置”),首次配置需指定:

    • 构建类型:点击顶部工具栏的「Debug」/「Release」(对应 CMake 中的 CMAKE_BUILD_TYPE)。
    • 架构:默认通常是 x64(若需 x86,点击「x64」下拉框切换)。
    • CMake 变量(可选):若需手动指定 OpenCV_DIR(比如默认路径找不到 OpenCV),操作如下:右键项目根目录 →「CMake 设置」→ 在「CMake 命令参数」中添加 -DOpenCV_DIR="C:/path/to/OpenCV"(路径替换为你的 OpenCV 配置目录,需包含 OpenCVConfig.cmake)。
  3. Build 编译

    • 配置完成后,点击顶部工具栏的「生成」→「全部生成」(或快捷键 Ctrl+Shift+B)。
    • 编译结果(.dll/.lib)会输出到 CMakeLists.txt 中定义的 FEATURE_OUTPUT_DIR(如 FeatureExtraction/bin/Debug)。
  4. 调试(可选)若需调试库文件,可在 VS 中直接设置断点,通过「启动调试」(F5)运行(需先配置调试入口,或关联依赖此库的可执行项目)。

方式二:命令行(推荐自动化 / 脚本集成场景)

通过命令行手动调用 CMake 和 VS 的构建工具,适合批量编译、CI/CD 脚本集成,或需要精确控制配置参数的场景。

具体步骤(Windows 命令行 / PowerShell)

  1. 进入项目目录打开命令行,切换到 FeatureExtraction 根目录(包含 CMakeLists.txt 的目录):

    cd D:/your/project/FeatureExtraction
    
  2. 创建 “构建目录”(推荐 Out-of-Source Build)为避免污染源码目录,建议创建独立的构建目录(如 build),所有生成的文件(.sln、中间文件)都放在这里:

    mkdir build  # 创建构建目录
    cd build     # 进入构建目录
    
  3. CMake 配置(生成 VS 解决方案)运行 CMake 命令,指定生成 “VS2022 风格的构建系统”,并传递必要参数:

    # 基础命令(默认 x64 架构,构建类型后续指定)
    cmake .. -G "Visual Studio 17 2022" -A x64# 若需指定 OpenCV_DIR(可选,路径替换为你的实际路径)
    cmake .. -G "Visual Studio 17 2022" -A x64 -DOpenCV_DIR="C:/path/to/OpenCV"
    
    • -G "Visual Studio 17 2022":强制生成 VS2022 的构建文件(17 是 VS2022 的版本号)。
    • -A x64:指定架构为 64 位(若需 32 位,改为 -A Win32)。

    运行成功后,build 目录下会生成 FeatureExtraction.sln 解决方案文件。

  4. 命令行编译有两种方式编译:

    • 方式 1:用 CMake 直接调用构建系统(推荐,跨平台通用):
      # 编译 Debug 版本
      cmake --build . --config Debug# 编译 Release 版本
      cmake --build . --config Release
      
    • 方式 2:用 VS 自带的 msbuild 命令(需先配置 VS 环境变量,或用「x64 Native Tools Command Prompt for VS 2022」):
      # 编译 Debug 版本
      msbuild FeatureExtraction.sln /p:Configuration=Debug /p:Platform=x64# 编译 Release 版本
      msbuild FeatureExtraction.sln /p:Configuration=Release /p:Platform=x64
      
  5. 查看结果编译产物(.dll/.lib)同样输出到 FeatureExtraction/bin/Debug 或 Release 目录。

两种方式的对比与选择

维度Visual Studio 图形化界面命令行
操作难度低,图形化引导,适合新手中,需记忆命令参数,适合有经验用户
调试便利性高,可直接断点调试、查看变量、关联依赖项目低,需配合 GDB 等工具,或生成调试信息后用 VS 打开
自动化支持差,难以集成到脚本 / CI 流程高,可写入 .bat/.ps1 脚本,支持批量编译
参数控制需通过 “CMake 设置” 界面配置,部分参数隐藏直接在命令行传递,参数更透明、灵活
适用场景日常开发、调试、单模块编译批量构建、环境部署、CI/CD 集成、跨平台验证

关键注意事项

  1. “配置 - 编译” 两步不可省:直接双击 CMakeLists.txt 或拖拽到 VS 是 “打开配置”,必须先完成 CMake 配置(生成 .sln/.vcxproj),再点击 “生成”。
  2. 构建类型一致性:Debug/Release 需在配置阶段明确(VS 工具栏或命令行 --config 参数),两者的库文件不可混用(Debug 版带调试信息,Release 版优化过)。
  3. OpenCV 路径正确性:若配置时提示 “OpenCV 头文件目录不存在”,需通过 -DOpenCV_DIR 手动指定路径(VS 图形化在 “CMake 命令参数” 中加,命令行直接跟在 cmake 命令后)。
  4. 输出目录:两种方式的编译结果路径完全一致(均遵循 FEATURE_OUTPUT_DIR 定义),无需担心产物位置不同。

总结:日常开发优先用 VS 图形化界面(直观、调试方便);需要自动化或精确控制时用命令行(灵活、可脚本化)。两者最终生成的库文件完全一致,可根据场景自由选择。

http://www.dtcms.com/a/418402.html

相关文章:

  • 【不背八股】19.GPT-2:不再微调,聚焦零样本
  • 5、焊接质量检验及缺陷分析
  • 【AI】大模型的分析力横评:一次“伪异步”排查后的真实思考
  • 养老院服务质量建设专项网站广州seo关键词优化外包
  • 第一章 假设三:走势包含无序运动状态(混沌现象)和有序运动状态(下跌或上涨)
  • ElementUI-Table 表格实现行拖拽
  • Logit论文阅读
  • 网站cms建设wordpress模仿app启动广告屏弹窗
  • 21. 一个像素对应多个纹素
  • 设备沉睡的“心跳”难题:BLE休眠后无法被手机唤醒的分析与优化
  • 【计算机基础】网络系列(二)TCP
  • 网站seo整站优化淘宝网站的建设
  • Python 自动化导出PDF表格:List、Dictionary、Pandas DataFrame和数据库实例演示
  • GPT-5-Codex Prompting Guide|提示词指南
  • PDF转图片工具:基于PyQt5的完整实现与深度解析
  • 万兴PDF专家安装教程(附安装包)万兴PDF免费版下载详细安装图文教程
  • Codeforces Round 1052 (Div. 2) C. Wrong Binary Searchong Binary Search
  • 网站开始怎么做的做网站用php还是html
  • 算法基础篇(7)双指针
  • 从零开始学华为:Console口连接设备
  • 华为bgp路由的各种控制和团体属性及orf使用案例
  • 网站中的表单怎么做吉林网页制作公司
  • 【开题答辩全过程】以 Python基于大数据的四川旅游景点数据分析与可视化为例,包含答辩的问题和答案
  • MySQL复合查询(重点)
  • Java面试揭秘:从Spring Boot到微服务的技术问答
  • 【项目】自然语言处理——情感分析 <上>
  • 生态碳汇涡度相关监测与通量数据分析实践技术应用
  • 【linux内核驱动day04】
  • 安全笔记(一)
  • 17-Language Modeling with Gated Convolutional Networks