国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

ninja:一個簡單的構建方式

系統
每隔一段時間,我就會發現一款我非常喜歡的新軟件,今天我想說說我最近喜歡的一款軟件:ninja!

[[350981]]

大家好!每隔一段時間,我就會發現一款我非常喜歡的新軟件,今天我想說說我最近喜歡的一款軟件:ninja

增量構建很有用

我做了很多小項目,在這些項目中,我想設置增量構建。例如,現在我正在寫一本關于 bash 的雜志,雜志的每一頁都有一個 .svg文件。我需要將 SVG 轉換為 PDF,我的做法是這樣的:

  1. for i in *.svg
  2. do
  3. svg2pdf $i $i.pdf # or ${i/.svg/.pdf} if you want to get really fancy
  4. done

這很好用,但是我的 svg2pdf 腳本有點慢(它使用 Inkscape),而且當我剛剛只更新了一頁的時候,必須等待 90 秒或者其他什么時間來重建所有的 PDF 文件,這很煩人。

構建系統是讓人困惑的

在過去,我對使用 make 或 bazel 這樣的構建系統來做我的小項目一直很反感,因為 bazel 是個大而復雜的東西,而 make 對我來說感覺有點神秘。我真的不想使用它們中的任何一個。

所以很長時間以來,我只是寫了一個 bash 腳本或者其他的東西來進行構建,然后就認命了,有時候只能等一分鐘。

ninja 是一個極其簡單的構建系統

但 ninja 并不復雜!以下是我所知道的關于 ninja 構建文件的語法:創建一個 rule 和一個 build

rule 有一個命令(command)和描述(description)參數(描述只是給人看的,所以你可以知道它在構建你的代碼時在做什么)。

  1. rule svg2pdf
  2. command = inkscape $in --export-text-to-path --export-pdf=$out
  3. description = svg2pdf $in $out

build 的語法是 build output_file: rule_name input_files。下面是一個使用 svg2pdf 規則的例子。輸出在規則中的 $out 里,輸入在 $in 里。

  1. build pdfs/variables.pdf: svg2pdf variables.svg

這就完成了!如果你把這兩個東西放在一個叫 build.ninja 的文件里,然后運行 ninja,ninja 會運行 inkscape variables.svg --export-text-to-path --export-pdf=pdfs/variables.pdf。然后如果你再次運行它,它不會運行任何東西(因為它可以告訴你已經構建了 pdfs/variables.pdf,而且是最新的)。

Ninja 還有一些更多的功能(見手冊),但我還沒有用過。它最初是為 Chromium 構建的,所以即使只有一個小的功能集,它也能支持大型構建。

ninja 文件通常是自動生成的

ninja 的神奇之處在于,你不必使用一些混亂的構建語言,它們很難記住,因為你不經常使用它(比如 make),相反,ninja 語言超級簡單,如果你想做一些復雜的事情,那么你只需使用任意編程語言生成你想要的構建文件。

我喜歡寫一個 build.py 文件,或者像這樣的文件,創建 ninja 的構建文件,然后運行 ninja

  1. with open('build.ninja', 'w') as ninja_file:
  2. # write some rules
  3. ninja_file.write("""
  4. rule svg2pdf
  5. command = inkscape $in --export-text-to-path --export-pdf=$out
  6. description = svg2pdf $in $out
  7. """)
  8.  
  9. # some for loop with every file I need to build
  10. for filename in things_to_convert:
  11. ninja_file.write(f"""
  12. build {filename.replace('svg', 'pdf')}: svg2pdf {filename}
  13. """)
  14.  
  15. # run ninja
  16. import subprocess
  17. subprocess.check_call(['ninja'])

我相信有一堆 ninja 的最佳實踐,但我不知道。對于我的小項目而言,我發現它很好用。

meson 是一個生成 ninja 文件的構建系統

我對 Meson 還不太了解,但最近我在構建一個 C 程序 (plocate,一個比 locate 更快的替代方案)時,我注意到它有不同的構建說明,而不是通常的 ./configure; make; make install

  1. meson builddir
  2. cd builddir
  3. ninja

看起來 Meson 是一個可以用 ninja 作為后端的 C/C++/Java/Rust/Fortran 構建系統。

就是這些!

我使用 ninja 已經有幾個月了。我真的很喜歡它,而且它幾乎沒有給我帶來讓人頭疼的構建問題,這讓我感覺非常神奇。 

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2016-09-21 12:54:10

CAAS系統鏡像

2016-09-14 17:48:44

2018-09-17 15:12:25

人工智能神經網絡編程語言

2011-03-24 09:34:41

SPRING

2009-07-14 16:02:42

JDBC例子

2009-08-19 04:14:00

線性鏈表

2018-11-22 14:09:45

iOS架構組件開發

2023-02-07 10:40:30

gRPC系統Mac

2015-12-04 11:36:04

SaaS架構設計可持續

2020-11-30 13:16:29

Python編程語言

2014-12-08 10:03:47

IonicHybrid混合應用

2017-11-23 08:30:26

編程Python擲骰子游戲

2011-09-08 13:41:53

Widget

2018-09-18 10:11:21

前端vue.jsjavascript

2020-03-26 17:00:53

HashMapputJava

2010-04-19 17:21:36

Oracle寫文件

2021-07-20 10:30:46

Golanghttp語言

2020-09-29 15:08:47

Go UI框架開發

2019-11-07 14:00:36

MySQL數據庫SQL

2017-08-17 16:37:59

MySQL數據遷移
點贊
收藏

51CTO技術棧公眾號

欧美日韩www| free性m.freesex欧美| 国产高清在线精品| 欧美高清中文字幕| 国产精品久久久乱弄 | 成人免费xx| 日韩美女视频一区二区| 亚洲精品三区| 欧美黄色性生活| 欧美一区在线直播| 亚久久调教视频| 可以在线观看的av| 一本一道综合狠狠老| 亚洲国产欧美国产第一区| bbw在线视频| 自拍视频在线| av日韩久久| jizz一区二区| 日韩麻豆第一页| 日本一区二区三区在线视频| 精品国产91乱码一区二区三区| 免费成人av资源网| 伊人久久大香线蕉综合网站| 澳门成人av网| 免费一区二区三区在线视频| 一道本一区二区三区| 日韩欧美久久| 亚洲欧洲99久久| 免费xxxxx网站中文字幕| 日韩午夜在线视频| 91精品丝袜国产高跟在线| 国产福利亚洲| 亚洲日本中文| 成人在线视频福利| 欧美日韩亚洲网| 亚洲人成免费网站| 性欧美18~19sex高清播放| 国产资源一区| 久青草国产在线| 麻豆md0077饥渴少妇| 欧美在线观看日本一区| 在线播放91灌醉迷j高跟美女| 欧美日韩成人一区| 国产在线播精品第三| 国产蜜臀97一区二区三区 | 日本激情综合网| 成人观看视频| 制服丝袜综合日韩欧美| 日韩美女在线观看一区| 6080日韩午夜伦伦午夜伦| 国产精品亲子伦对白| 久久综合给合久久狠狠狠97色69| 国产区视频在线播放| 欧美人与性动交α欧美精品图片| 亚洲国产精品久久久久久| 久久免费国产精品| 91成人超碰| 黄黄的网站在线观看| 欧美三级理伦电影| 国产精品国产亚洲精品看不卡| 亚洲网址你懂得| 91精品欧美综合在线观看最新 | 韩国v欧美v日本v亚洲| 国产精品欧美一区二区三区| 欧美一区电影| 国产精品九九久久久久久久| 正在播放亚洲一区| 国产91在线高潮白浆在线观看| 日日噜噜夜夜狠狠| 国产精品色呦| 五月天一区二区三区| 精品国产一区二区三区四区在线观看 | 欧美wwwwww| 国产精品zjzjzj在线观看| 一区二区三区国产在线| 欧美体内she精视频在线观看| 国产一区视频网站| 男人透女人免费视频| 国产日韩精品一区二区| 精品国产一区久久| 美女免费久久| 99热在线观看| 亚洲三级av| 欧美在线观看www| 久久伦理网站| 亚洲少妇久久久| 国产在线观看免费| 国产激情欧美| 国产一区日韩一区| 成人永久免费视频| 欧美日韩五月天| 国内精品视频久久| 国产精品美女黄网| 又黄又www| 久久亚洲国产精品尤物| 性8sex亚洲区入口| 国产精品69毛片高清亚洲| 91色在线porny| 中文字幕av一区二区三区| 国产日韩av一区| 欧美精品一二三| 成人黄视频免费| 欧美gay视频| 欧美日韩成人在线视频| 欧美中文字幕久久| 99热这里都是精品| 男人透女人免费视频| 精品国产电影一区二区| 亚洲人妖av一区二区| 极品销魂美女一区二区三区| 中文字幕亚洲综合久久| julia一区二区中文久久94| 综合网插菊花| 九九热线有精品视频99| 日本午夜一区二区| 亚洲国产精品欧美一二99 | 久久精品99国产精品| 亚洲国产资源| 无码精品国产一区二区三区免费| 久久riav二区三区| 国产成人自拍视频在线观看| 中文字幕欧美日韩在线| 日韩视频在线永久播放| 欧美日韩另类视频| 中文字幕一区av| 97久久久精品综合88久久| 日本va欧美va精品发布| 国产精品a久久久久| 国产欧美日韩精品一区二区三区| 久久久精品在线视频| 美女精品在线观看| 美女性感视频久久久| 全网国产福利在线播放| 日本免费高清视频| 亚洲天堂资源| 国产女人18毛片水真多成人如厕| 亚洲精品suv精品一区二区| 狼狼综合久久久久综合网| 一本大道香蕉8中文在线视频| 国产剧情一区| 亚洲一卡二卡三卡四卡无卡久久| 国产精品99久久久久久久| 欧美亚洲国产精品久久| 亚洲欧洲二区| 美女日韩欧美| 成年人国产在线观看| 超碰在线caoporen| 久久99精品国产99久久| av在线最新| 91在线视频官网| 欧美亚洲视频在线观看| 免费成人av电影| 日本vs亚洲vs韩国一区三区 | 精品电影在线观看| 57pao成人永久免费视频| 欧美一级高清免费播放| 欧美精品在欧美一区二区| 秋霞在线一区| 高潮白浆女日韩av免费看| 奇米影视首页 狠狠色丁香婷婷久久综合 | 亚洲精品一二区| 免费影视亚洲| 国产高清自拍99| 91亚洲国产精品| 成人免费网站在线观看| 成人欧美一区二区三区黑人孕妇| 国产女人精品视频| 91免费精品视频| aa成人免费视频| 国产精品久久久久久久久久直播| 97久久天天综合色天天综合色hd| 1769国产精品视频| 欧美激情三区| 日本一区二区三区播放| 精品国产亚洲在线| 久久人妻无码一区二区| 日韩精品不卡一区二区| 欧美日韩亚洲综合一区| 人人干视频在线| 蜜桃av噜噜一区| 欧美日韩黄网站| 一区二区免费| 青草久久视频| 欧美亚洲在线日韩| 一区二区三区在线| 亚洲综合不卡| 国产乱人伦偷精品视频不卡| 99久久精品免费看国产免费软件| 国产肉丝袜一区二区| 亚洲欧美日韩国产手机在线 | 91在线丨porny丨国产| 国产亚洲成aⅴ人片在线观看| 欧美国产乱子伦| 亚洲色图欧美偷拍| 亚洲aaa精品| 欧美在线影院一区二区| 精品视频一区二区不卡| 国产成人免费精品| a级片国产精品自在拍在线播放| 高清在线视频不卡|