日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 女儿的朋友5中汉字晋通话 欧美成人免费高清视频 | 亚洲国产精品国自产拍久久 | 在线播放无码后入内射少妇 | 亚洲xx网站 | 波多野结衣办公室双飞 | 成人网页 | 男人阁久久| 诱人的乳峰奶水hd | 国产午夜福利100集发布 | 自拍偷拍亚洲精品 | 亚洲成av人片一区二区梦乃 | 国产伦精品一区二区三区千人斩 | 国产做爰免费视频观看 | 欧美99久久精品乱码影视 | 一级香蕉视频在线观看 | 日本一二区视频 | 欧美 日韩 人妻 高清 中文 | 亚洲av午夜精品一区二区三区 | 欧美放荡办公室videos4k | 国产三级av在线 | 欧美一区二区三区观看 | 性欧美18一19性猛交 | 欧美三级午夜理伦三级小说 | 97人人模人人爽人人少妇 | 久久性| 欧美成人激情 | 中文亚洲av片不卡在线观看 | 国产av不卡一区二区 | 欧美xxxx888 | 国外av在线| 国产精品卡一 | 野外吮她的花蒂高h在线观看 | 国产一区二区三区色淫影院 | 久久久久久亚洲 | 黄色男人的天堂 | 插插看 | 免费的黄色的视频 | 91久久国产综合久久91 | 91成人免费在线观看视频 | 欧美在线播放视频 | 久久午夜国产 | 久久国产资源 | 永久国产| 91久久精品国产91性色tv | 俄罗斯av片 | 久久久久久国产精品免费 | 一区二区三区四区影院 | 日韩综合在线视频 | 日本韩国在线播放 | 草逼网站 | 日韩av大片 | 国产成人精品视频在线 | 亚洲最大中文字幕 | 欧美v日韩 | 久久精品视频在线免费观看 | 国产卡一卡二卡三无线乱码新区 | 亚洲日本精品一区 | 男女激情实录 | 成人国产精品免费观看 | 亚洲欧美激情一区二区三区 | 欧美日韩国产成人在线 | www.波多野结衣.com | 日本人妖xxxx| 日韩色区 | 日韩精品在线观看免费 | 精品成在人线av无码免费看 | 中文字幕第6页 | 91porny在线| 国产精品九一 | 亚洲天堂社区 | 免费观看黄色网页 | 丁香亚洲| 好男人网站 | 午夜影院| 亚洲人高潮女人毛茸茸 | 强开小嫩苞一区二区三区网站 | 免费黄色小视频在线观看 | 日韩在线视频一区二区三区 | 精品久久久久久中文字幕人妻最新 | 久久刺激 | 久久精品一区二区三区黑人印度 | 亚洲欧美在线观看 | 久久综合亚洲精品 | 成人开心网 | 中文高清av | 亚洲激情视频一区 | 九草网 | 久久国内免费视频 | 欧美xxxx喷水 | 男同志毛片特黄毛片 | 狠狠撸狠狠操 | 在线播放日韩av | 成人午夜影院 | 成人在线观看一区二区三区 | 成人在线免费网址 | 老司机激情视频 | 97视频久久| 人妖ts福利视频一二三区 | 污污污www精品国产网站 |