ninja的简单使用

这篇具有很好参考价值的文章主要介绍了ninja的简单使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Ninja安装

windows环境

问题的解决通常有多种方法。按照结果的好坏程度,可以将解决方法简单的划分为,上中下三个层次,见:为什么谋士总喜欢提上中下三策?

在windows上安装Ninja, 这里也给出上中下三策。

下策:源码编译。大多数人使用Ninja都不是为了修改它的源码,而是将其作为工具使用。所以,有二进制包,优先使用二进制文件,避免源码编译,编译安装可见:【ninja】Windows下安装ninja环境

中策:直接从下载二进制包。但是,Ninja这个构建工具,它还依赖rc.exe这样的程序,需要链接kernel32.lib这样的库。在windows powershell使用cmake -G Ninja是可能报错的,比如:Ninja-无法找到rc.exe、Ninja-无法链接kernel32.lib。因为一些程序和库的路径,不在系统的环境变量PATH中。而,在Developer PowerShell for VS2019中进行编译则没有问题,因为它已经在PATH中添加了路径,可以通过$env:path查看。二进制包安装可见:How to install ninja-build for C++

上策:不用下载。我看了下我安装的VS2019环境中,在安装组件中,将"用于Windows的C++ CMake工具"勾选安装上后,会安装cmake和Ninja。之后,在Developer PowerShell for VS2019中进行编译程序,顺顺利利。

ninja的简单使用

Linux环境

# ubuntu
sudo apt install ninja-build

入门使用

与CMake一起使用

参考: CMake基础 第10节 使用ninja构建 、Difference between invoking ninja directly vs through cmake --build

  • 测试ninja代码。

    │  CMakeLists.txt
    │  main.cpp
    
    cmake_minimum_required(VERSION 3.1)
    project(hello_ninja)
    add_executable(${PROJECT_NAME} main.cpp)
    
    #include <iostream>
    int main(int argc, char *argv[]) { std::cout << "hello world" << std::endl; }
    
  • 编译整个项目

    mkdir build && cd build 
    cmake -G Ninja ..
    ninja
    
  • 更进一步,我们可以看下生成的*.ninja文件。

    ninja文件的相关语法可以参考:Writing your own Ninja files。我没有看这个文档,因为没有必要手写ninja文件。看起来和Makefile类似。执行ninja help可以看到可以生成的目标。

    ninja.exe help
    [0/1] Re-running CMake...-- Configuring done
    -- Generating done
    -- Build files have been written to: 06-ninja-use/build
    
    [1/1] All primary targets available:
    edit_cache: phony
    rebuild_cache: phony
    hello_ninja: phony
    all: phony
    build.ninja: RERUN_CMAKE
    clean: CLEAN
    help: HELP
    
  • 编译的时候添加更多的参数

    # windows上默认生成的是Debug版本,生成Relase版本
    cmake -G Ninja .. -DCMAKE_BUILD_TYPE=Release
    
    # 默认生成的是64位的版本,挺好;把32位的扔到垃圾桶里去
    dumpbin /headers .\hello_ninja.exe
    
  • 如果需要调试项目。在windows下,直接用vs打开编译生成的可执行文件,即可进行调试。文章来源地址https://www.toymoban.com/news/detail-496767.html

到了这里,关于ninja的简单使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【全网最全最细】青龙面板搭配Ninja+依赖+Ninja配置的超细讲解教程!!!

    通过Ninja登录京东账号实现京东代挂赚取京东京豆    大家可以加群644288320,进行技术交流。 由于xshell没有finalshell创建文件那么方便,所有要进行以下操作: 注意:把finalshell关了,重新连接一下,把下面全部命令复制粘贴进去即可 然后找到以下文件(如图)

    2023年04月08日
    浏览(47)
  • OpenHarmonyOS-gn与Ninja

    GN语法及在鸿蒙的使用 [gn+ninja学习 0x01]gn和ninja是什么 ohos_sdk/doc/subsys-build-gn-coding-style-and-best-practice.md GN 语言与操作 gn是generate ninja的缩写,它是一个元编译系统(meta-build system),是ninja的前端,gn和ninja结合起来,完成OpenHarmony操作系统的编译任务。 元构建系统是一个生成其他

    2024年01月20日
    浏览(50)
  • Python系列-Django-Ninja

    适用对象: 有一定python和django基础,对此技术感兴趣,或者想快速尝试、实现效果的。 原则: 实用为主,效果为主 不重复造轮子,但应该知道其工作原理 官网是最好的教程,其它只是辅助 Django Ninja 是一个使用 Django 和 Python 3.6+ 类型提示构建 API 的 Web 框架。 官网地址 做记

    2023年04月08日
    浏览(23)
  • django REST框架- Django-ninja

    Django 是我学习的最早的web框架,大概在2014年,当时选他原因也很简单就是网上资料比较丰富,自然是遇到问题更容易找答案,直到 2018年真正开始拿django做项目,才对他有了更全面的了解。他是一个入门有门槛,学会了做项目非常方便的Web框架。 《2020 Python 开发者调查结果

    2024年02月05日
    浏览(31)
  • Qt: ninja: build stopped: subcommand failed.

    目前使用的环境如下: 编译信息如下, 错误貌似与AotoMoc有关: 我是如何解决的: 将项目移动至C盘以外的位置, 最后Build成功, 猜测可能是权限不足之类的, 目前没有找到其他解决方案 当然也有尝试过使用管理员权限启动Qt Creator, 结果以失败告终 最后, QtCreator 10.0创建项目可勾选

    2024年02月11日
    浏览(44)
  • Android13 编译ninja failed with: exit status 137

    现象很奇怪,主机是ubuntu 18.04, 内存有32G,并且系统中有两份Android13代码, 有一份编译正常,另外一份编译不正常,一度以为是因为下载源码不齐全导致,后面仔细看日志,原来是内存不够,导致OOM-killer杀死了。 分析: 当前界面没有太多可以参考的出错信息,看日志: 

    2024年02月22日
    浏览(46)
  • “Ninja is required to load C++ extensions”解决方案

    Ninja is required to load C++ extensions 在跑一份代码时,由于该代码中需要调用 torch/utils/cpp_extension.py 文件,而此时又未安装ninja库,所以会出现如下错误: 此时问题只在于未安装ninja库,解决方法如下: PS 什么是Ninja? 在传统的 C/C++ 等项目构建时,通常会采用 make 系统使用 Makef

    2023年04月26日
    浏览(29)
  • Ubuntu Qt: ninja: build stopped:subcommand failed解决方案

    编译Qt源码时,出现报错: 滑动终端上的编译日志,通过日志上的**FAILED:**信息可以查看是编译哪个库导致的失败. 我的报错信息是: 结果反复测试,最终发现 qtbase/bin 目录下的lupdate文件在编译时总是自动消失,继续查看日志,最后发现: 报错原因: 因为Qt需要LLVM来生成qdoc. 在

    2024年02月03日
    浏览(30)
  • Android12源码编译报错ninja: build stopped: subcommand failed.解决

    虚拟机:wsl 2.0 Ubuntu18.04 虚拟机配置:8G内存,1T存储 软件版本:安卓系统目前最高版本是Android S,也就是Android 12 beta版本源码,无任何修改 报错内容:编译至54%时,ninja编译中断,ninja: build stopped: subcommand failed. 报错后尝试多次增量编译,始终在54%作用报错,报错内容一致。

    2024年01月19日
    浏览(47)
  • ESP32C3:ninja failed with exit code 1解决方案

    这个图片是CSDN上偷的= =,自己解决了截不到图了 特征是:使用 ESP-IDF PowerShell 最后两行出现 第一步 找到安装IDF工具的安装包(离线版) https://dl.espressif.cn/dl/esp-idf/ 离线安装版快速跳转Click Here 打开后第三行 检查 Windows 注册表中的“启用长路径” [正常] 是不正常的 我是这个方

    2023年04月27日
    浏览(90)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包