怎样使用ninja编译系统编译我们的程序?

  • 使用ninja
    • 配置自己的环境来使用ninja
  • 构建程序
  • Android使用ninja
  • Windows使用
    • 调试
    • 不使用VS
  • 技巧

  • 问题

56554805201307142130163626832305601_000_640

Ninja的原意是忍者,忍者神龟的忍者,这里被google拿来用在他们的编译系统上,目标是替代make之类的构建器,因为他们觉得其它的构建器太慢了,为此他们做过对比,对于chrome之类的拥有几万个文件的超大程序来说,用ninja的话,几乎立即开始编译,而make几乎要等上个10秒钟才开始编译。

Ninja的另外一个特点,其实不是他娘的特点,就是独立于编译系统的输入文件,我想问下google大神,难道cmake的CMakeList.txt不是吗?

Google把别的编译系统比作高级语言,而把自己努力设计成更底层的汇编器,这样才能从指令层面来优化编译性能。 Ninja的的构建(build)文件是给人看的,但不是特别方便于手写。这些特点允许她快速评估递增构建。毕竟不是每次都要从头开始。


Ninjia的底层特性使得她更适合嵌入功能强大的构建系统。 通过gyp(哈哈,拿来的CMakeLists.txt),ninja可以构建Chrome和v8, node.js等等项目。通过cmake, ninja能够构建LLVM(虚拟机啊)以及KDE桌面等等。

怎样获取ninja?

github上有:git clone git://github.com/martine/ninja.git

或者我们在debian/ubuntu上可以这样:apt-get install ninja-build


本文属原创,转载请注明出处,违者必究

关注微信公众平台:程序员互动联盟(coder_online),你可以第一时间获取原创技术文章,和(java/C/C++/Android/Windows/Linux)技术大牛做朋友,在线交流编程经验,获取编程基础知识,解决编程问题。程序员互动联盟,开发人员自己的家。

【答疑解惑】C++ cin问题

部分参考:https://code.google.com/p/chromium/wiki/NinjaBuild

<think>好的,用户想了解在Windows系统使用CMake和Ninja编译OpenCV。我需要先理清步骤,确保没有遗漏关键点。首先,用户可能已经知道一些基础知识,但可能需要详细的指导。我需要考虑他们可能遇到的问题,比如环境配置、依赖项下载、CMake配置选项等。 第一步应该是安装必要的工具。CMake和Ninja是必须的,还有Visual Studio的构建工具,因为即使使用Ninja,MSVC编译器还是需要的。用户可能不知道需要安装哪些组件,特别是Visual Studio Build Tools中的C++部分,所以需要明确说明。 接下来是获取OpenCV源代码,用户可能从官网下载或者克隆仓库,这里要给出两种方式,方便不同需求的用户。然后是OpenCV的依赖项,比如FFmpeg、libjpeg等,这些在编译过程中可能会被下载,但有时候网络问题会导致失败,可能需要提前下载或者配置代理。 然后是CMake的配置步骤,这里需要详细说明如何设置生成器为Ninja,指定构建类型,以及可能的必要选项,比如BUILD_opencv_world,这样用户如果希望生成单个库文件的话会方便很多。另外,还要提到安装路径的设置,方便后续使用。 构建和编译阶段,使用Ninja命令,可能需要指出如何并行编译以加快速度。安装步骤也是必要的,这样用户可以将库文件部署到指定位置。 最后的环境变量配置,让用户知道如何将OpenCV添加到系统路径中,或者如何在项目中引用。可能还需要验证安装是否成功,比如编写一个简单的程序测试。 用户可能遇到的常见问题包括路径错误、依赖下载失败、编译器找不到等,需要提前提醒。比如,CMake配置时如果找不到依赖,可能需要手动指定路径,或者检查网络连接。另外,Ninja的路径是否在系统变量中,否则无法直接调用。 需要确保步骤清晰,顺序正确,语言简洁,让用户能够一步步跟随操作。同时,给出示例命令,方便复制粘贴。如果有可选的高级配置,可以简要提及,但主要关注基本流程。</think>以下是在 Windows 系统使用 **CMake + Ninja** 编译 OpenCV 的详细步骤: --- ### **1. 准备工具** 1. **安装 CMake** 从 [CMake 官网](https://cmake.org/download/) 下载并安装,安装时勾选 `Add to PATH`。 2. **安装 Ninja** - 从 [Ninja 官网](https://ninja-build.org/) 下载 `ninja-win.zip`。 - 解压后将 `ninja.exe` 所在目录加入系统 `PATH`。 3. **安装 Visual Studio 编译器** - 安装 [Visual Studio](https://visualstudio.microsoft.com/)(社区版免费),勾选 **C++ 桌面开发** 组件(必须包含 MSVC 编译器)。 4. **下载 OpenCV 源码** - 从 [OpenCV GitHub](https://github.com/opencv/opencv) 克隆仓库,或直接下载 ZIP 包: ```bash git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git # 可选(额外模块) ``` --- ### **2. 配置 CMake** 1. **打开 CMake GUI** 设置源码路径(OpenCV 根目录)和构建路径(例如 `build` 文件夹)。 2. **配置关键选项** 点击 `Configure`,选择生成器为 **Ninja**,指定编译器为 **MSVC**(例如 Visual Studio 2022 的 `cl.exe`)。 根据需要修改以下选项: ```ini BUILD_opencv_world = ON # 合并所有库到单个 opencv_world.dll(可选) OPENCV_EXTRA_MODULES_PATH = path/to/opencv_contrib/modules # 若需额外模块 WITH_OPENGL = ON # 启用 OpenGL 支持(可选) BUILD_EXAMPLES = OFF # 关闭示例构建(加快编译) INSTALL_PREFIX = C:/opencv/ninja # 指定安装路径(推荐自定义) ``` 3. **处理依赖项** CMake 会自动下载 FFmpeg、OpenEXR 等依赖。若因网络问题失败: - 手动下载缺失文件到 `opencv/.cache` 对应目录。 - 或配置代理(在 CMake 中设置 `HTTP_PROxy` 环境变量)。 4. **生成 Ninja 构建文件** 点击 `Generate` 生成 `build.ninja` 文件。 --- ### **3. 编译与安装** 1. **使用 Ninja 编译** 打开命令提示符,进入构建目录(`build`),执行以下命令: ```bash ninja -j8 # -jN 指定并行编译线程数(根据 CPU 核心数调整) ``` 2. **安装到指定目录** 编译完成后执行: ```bash ninja install ``` 所有文件将输出到 `INSTALL_PREFIX` 指定的路径(如 `C:/opencv/ninja`)。 --- ### **4. 配置环境变量** 1. 将 OpenCV 的 `bin` 目录(如 `C:/opencv/ninja/x64/vc17/bin`)添加到系统 `Path` 环境变量。 --- ### **5. 验证安装** 编写一个简单的 OpenCV 程序(示例代码): ```cpp #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat img = imread("test.jpg"); imshow("Image", img); waitKey(0); return 0; } ``` 使用 CMake 或直接编译时,链接生成的 OpenCV 库文件。 --- ### **常见问题** 1. **Ninja 找不到编译器** 确保 Visual Studio 的 `cl.exe` 路径已加入环境变量(如 `C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.30.30705/bin/Hostx64/x64`)。 2. **依赖下载失败** 手动下载文件并放置到 `opencv/.cache` 对应目录,或使用国内镜像源。 3. **编译错误** 检查 CMake 配置日志,关闭冲突选项(如 `CUDA` 若未安装 NVIDIA 驱动)。 --- 通过以上步骤,你可以高效地使用 Ninja 编译 OpenCV,享受其快速的增量构建特性!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值