日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

基本概念(2)——make、ninja、nmake、jom

發布時間:2023/12/15 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 基本概念(2)——make、ninja、nmake、jom 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不用在命令行手動輸入編譯命令,把這些命令寫到一個txt文件內,調用make或者ninja工具自動執行編譯過程

make與makefile

多數內容copy自youtube的一個視頻:https://www.youtube.com/watch?v=E1_uuFWibuM
執行環境:原作者是在Linux下做的視頻,而我使用的是win10,win10下使用mingw-w64、msys2來安裝win下的gcc與make工具。安裝mingw-w64和msys2(我安裝后是不帶make工具的,pacman命令安裝的make)后配置下環境變量就可以使用gcc和make工具了。文本編輯器使用的是VS code。
一個可能用到的知識補充:https://www.biaodianfu.com/cygwin-ming-msys.html
mingw-w64官網:https://mingw-w64.org/doku.php/start
msys2官網:http://www.msys2.org/

為什么要用makefile

(1)簡單編譯一個c文件

命令:
gcc main.c -o main.exe
執行后會得到一個main.exe的文件。在控制臺中執行下:

這樣就得到了輸出。但是,如果.c文件很多,參數也很多,gcc的命令就會很長,源文件做一點點的修改就要執行一次冗長的gcc命令。這時候就可以使用make工具,寫一個makefile文件來執行編譯。makefile的寫法:

target是要編譯的結果,冒號后面的dependencies是依賴,command是要執行的命令(command前面是一個tab不是空格),例如:

去控制臺執行一下:

多個c文件的情況

為了試驗,寫下如下代碼,共三個文件:

如果直接使用gcc命令編譯的話,命令是:gcc main.c sayHello.c -o main.exe 如果文件特別多,只修改部分文件然后執行所有文件全部編譯的話,明顯會浪費時間。所以,這種情況下,就是對每個c文件單獨編譯,比如上圖中的sayHello.c單獨編譯成sayHello.o,最后鏈接到main.c文件。借用原視頻中的一個圖來說明下:

那么,針對我第一張圖中sayHello.c的makefaile就應該想下面這樣寫:

main.exe: main.c sayHello.o
    gcc main.c sayHello.o -o main.exe
sayHello.o: sayHello.c
    gcc -c sayHello.c -o sayHello.o


注意,按照順序,是從上向下寫,但編譯是從下向上編譯,也就是說,先編譯sayHello.c成sayHello.o,然后編譯main.c sayHello.o。注意上面編譯sayHello.c的時候有個-c參數,意思是把源文件編譯成.o的中間文件而不是.exe的可執行文件。
去執行下:

至此,已經得到的編譯的結果并且執行也沒問題,但是,由于編譯過程中出現了中間文件*.o,編譯后就沒用了,如果有很多的話一個個刪除不現實,所以在makefile中可以添加一個clean,如下:

main.exe: main.c sayHello.o
    gcc main.c sayHello.o -o main.exe
sayHello.o: sayHello.c
    gcc -c sayHello.c -o sayHello.o
clean:
    rm *.o

執行下make clean就可以清理了:

makefile文件中的變量


上圖中有三個c文件,分別都使用了“gcc”這個名字,試想下,如果有一百個c文件,那么就要寫一百次gcc,如果換編譯器,就要每一個都要修改,所以,使用一個變量來代替“gcc”就顯得很有必要了。

執行效果如下:

下面也是變量的用法示例:

多個main函數的情況

上圖是原視頻中的makefile文件,換到win下,需要在可執行文件下添加.exe,例如我的例子就可以寫成下面這樣:
1、目錄文件,我修改了兩個main文件一個是main1.c另外一個是main2.c, 這兩個文件內容是完全一樣的

2、修改makefaile內容,變化部分用紅色標出

3、去執行下

nmake

可以理解成微軟家的make,隨著vs安裝

jom

qt的定制nmake
jom是nmake的克隆,可支持并行執行多個獨立命令。它基本上增加了-j命令行開關,類似于GNU make。原始博客文章仍可以在Qt博客上找到。 https://wiki.qt.io/Jom
一般make可以加一個參數-j表示使用多少個線程來編譯,-j4就表示使用4個線程編譯.
linux下使用make,而在windows上面使用nmake,是vs提供的一個東西,但是有很個坑的事,就是nmake不支持-j這個參數,,也是就是說它是單線程編譯,Qt為了解決這樣子的一個問題,弄出一個jom.exe,這和make的功能基本是一樣的,但是他比nmake多出來的就是,-j這個參數.也就是說它支持多線程編譯.
來自 https://bbs.csdn.net/topics/392205042

總結

以上是生活随笔為你收集整理的基本概念(2)——make、ninja、nmake、jom的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲av永久无码精品放毛片 | 四虎毛片| 久久精品久久99 | 午夜宅男影院 | 在线蜜桃 | 欧美在线激情视频 | 国产中文字幕亚洲 | 噜噜噜久久久 | 亚洲综合色网 | 激情图片网站 | 在线观看aaa | 秋霞伦理一区二区 | 欧美性视频网站 | 亚洲精品福利在线 | 农村偷人一级超爽毛片 | 大尺度做爰床戏呻吟舒畅 | 99人妻碰碰碰久久久久禁片 | 91成人毛片 | 国产精品久久久久久久久免费看 | 99久| 中文字幕不卡在线播放 | 日本精品专区 | 朴麦妮原版视频高清资源 | 亚洲av电影天堂男人的天堂 | 欧性猛交ⅹxxx乱大交 | 久久人妻无码aⅴ毛片a片app | 欧美激情精品 | 日韩欧美一 | 亚洲av首页在线 | 香蕉av在线 | 精品久久久无码中文字幕边打电话 | 久久99久久99精品蜜柚传媒 | 亚洲免费在线视频 | 国产av无码专区亚洲a∨毛片 | 成人欧美一区二区三区黑人 | 色一情一乱一乱一区91av | 无码精品a∨在线观看中文 福利片av | 亚洲综合网在线 | av大片免费观看 | 久久久久久久国产精品美女 | hd性videos意大利精品 | 一级黄色片看看 | www.youjizz.com日本 | 欧美久草视频 | 国产精品xxxxx | 天天综合网在线 | 3d成人动漫在线观看 | 日韩成人精品在线观看 | αv在线 | 麻豆免费在线 | 欧美成人高清 | 北条麻妃久久 | 日日骑 | 毛片在线免费观看视频 | 欧美变态另类刺激 | 97夜色 | 国产无套精品 | 午夜视频在线观看国产 | 久草老司机| 观看免费av| 黄色xxx| 女人下部全棵看视频 | 激情五月视频 | 91久久极品少妇xxxxⅹ软件 | 天天玩天天操 | av不卡在线免费观看 | 秋霞影院午夜 | 成人午夜网址 | 美女扒开粉嫩的尿囗给男生桶 | 日本高清无吗 | 日韩精品一区二区三区高清免费 | 伊人一级 | 特及毛片| 久久精品国产99 | 三级av免费看 | 国产妇女馒头高清泬20p多 | 国产免费自拍视频 | 66av欧美| 狠狠做深爱婷婷综合一区 | 女生扒开腿让男生操 | 91爱爱网站 | 亚洲国产精品va在线 | 女性向av免费网站 | 青青草www| 精品蜜桃av | 午夜精品小视频 | 日韩国产精品一区二区 | 久久精品视频在线免费观看 | 美女少妇直播 | 污片网站在线观看 | 好吊色在线视频 | 日韩成人无码影院 | 91在线视频国产 | www三级| 蜜桃成人无码区免费视频网站 | 国产88av| 国产123区 | av生活片 | 四川操bbb|