欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C/C++中cmake怎么用-創(chuàng)新互聯(lián)

小編給大家分享一下C/C++中cmake怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

青海ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!

1.編譯hello.c——單一源文件的編譯

//hello.c
#include <stdio.h>
int main(){
 puts("hello, world!");
 return 0;
}

為了編譯生成對(duì)應(yīng)的可執(zhí)行文件,你可能會(huì)使用下面的命令:

$ cc -o hello hello.c
$ ./hello
hello, world!

但是,如果使用make(前提是你的操作系統(tǒng)已經(jīng)安裝了GCC和GNU Make),會(huì)顯得更清爽一些。

$ make hello
cc hello.c -o hello
$ ./hello
hello, world!

1.1編寫Makefile

什么?你連“make hello”都懶得寫?看完這部分,你的“妄念”應(yīng)該就能實(shí)現(xiàn)了,到時(shí)候你只需要慢悠悠地打出4個(gè)字母——”make”,然后按下回車鍵,比圖形界面IDE還要方便(至少你不用到處去找那個(gè)該死的“運(yùn)行”按鈕在哪。

這時(shí)候你只要在hello.c的同一個(gè)目錄下新建一個(gè)文件Makefile作為make命令的配置文件即可。它的內(nèi)容很簡(jiǎn)單:

hello:

1.2設(shè)定編譯器

什么?你不想使用默認(rèn)的cc,而想使用gcc來(lái)編譯程序?那還不簡(jiǎn)單,只用在Makefile文件中把CC變量的值賦為gcc就可以了。

CC := gcc
hello:

如果你這時(shí)候想運(yùn)行make試下效果,請(qǐng)注意:make根本就不會(huì)重新編譯生成hello。為什么???因?yàn)閙ake很“懶”,因?yàn)樗鼨z測(cè)到hello.c和上一次編譯時(shí)一模一樣,再重新編譯生成的可執(zhí)行文件肯定也一樣啊,那就沒(méi)有運(yùn)行的必要了,直接返回結(jié)果了。這時(shí)候可以用上些“小手段”,反正make很好騙。輸入下面的命令,更新下hello.c的最近修改日期。

$ touch hello.c

或者干脆直接把hello文件刪掉。但是刪文件的方式也有高招和低招之分,如果你使用的是下面的命令:

$ rm -f hello

那么這就是低招了,因?yàn)檫@很可能誤刪了其他很重要的源文件,造成十分嚴(yán)重的后果。那么高招是什么呢?那就是在Makefile中添加下面的內(nèi)容:

clean:
 $(RM) hello

運(yùn)行方式也很簡(jiǎn)單,運(yùn)行make clean命令即可。

1.3增加編譯選項(xiàng)

如果你想為gcc增加-g -Wall -Wextra選項(xiàng),那么只要設(shè)定變量CFLAGS的值即可。

CC := gcc
CFLAGS := -g -Wall -Wextra
hello:
clean:
 $(RM) hello

這時(shí)候,運(yùn)行make clean和make的結(jié)果如下所示:

$ make clean
rm -f hello
$ make
gcc -g -Wall -Wextra hello.c -o hello

2.分塊編譯——編譯有多個(gè)源文件的程序

如果程序不再只有一個(gè)源文件,那么結(jié)合Make的內(nèi)置編譯規(guī)則,也可以很簡(jiǎn)潔地編寫Makefile文件完成編譯任務(wù)。下面是一個(gè)簡(jiǎn)單的例子:

LDLIBS := -lncurses
block: block.o function.o
block.o function.o: function.h
clean:
 $(RM) *.o
 $(RM) block

其中程序需要用到ncurses,它是一個(gè)字符終端下屏幕控制的基本庫(kù),因此在編譯時(shí)需要在最后增加-lncurses選項(xiàng)。這時(shí)候,可能你已經(jīng)發(fā)現(xiàn)了,其實(shí)編寫Makefile主要內(nèi)容就是編寫依賴關(guān)系,block: block.o function.o就是表示由block.o和function.o鏈接生成可執(zhí)行文件block。同時(shí)bolck.o和function.o就是根據(jù)需要從bolck.c和function.c編譯生成,因?yàn)閙ake有如下內(nèi)置規(guī)則:*.o由同名的c源文件生成,因此不必寫多余的bolck.o:bolck.cfunction.o:function.c。運(yùn)行結(jié)果如下

$ make
cc -c -o block.o block.c
cc -c -o function.o function.c
cc block.o function.o -lncurses -o block

3.Make的內(nèi)置規(guī)則

輸入make -p命令,可以查看所有的make的內(nèi)置規(guī)則,比如上面提到的*.o由同名的c源文件生成,在make -p的輸出結(jié)果中顯示如下:

%.o: %.c
# recipe to execute (內(nèi)置):
 $(COMPILE.c) $(OUTPUT_OPTION) $<

其中,%為通配符,$(COMPILE.c)是取COMPILE.c這個(gè)變量的值,如果你好奇這個(gè)值到底是什么,可以再繼續(xù)查找,發(fā)現(xiàn)下面的語(yǔ)句

# 默認(rèn)
COMPILE.C = $(COMPILE.cc)

在進(jìn)一步找,得到:

# 默認(rèn)
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c

上面的變量可以像之前的實(shí)例那樣重新賦值(默認(rèn)為空),從而自定義編譯方式。

自動(dòng)變量

除了像$(COMPILE.c)和$(COMPILE.cc)這樣形式的變量,make中還存在一類很常用、無(wú)比重要的變量——自動(dòng)變量。
下面列出最常用的自動(dòng)變量:

  • $@ 規(guī)則的生成目標(biāo)

  • $% 檔案文件成員結(jié)構(gòu)中的文件名元素

  • $< 第一個(gè)依賴文件名

  • $^ 所有的依賴文件名(已經(jīng)消重),以空格分隔

  • $+ 所有的依賴文件名(未經(jīng)消重),以空格分隔

  • $* 所有除掉后綴的依賴文件名,以空格分隔,僅適用于模式規(guī)則。注:文件名包含stem和suffix,去掉suffix就剩下了stem。比如hello.cpp的stem是hello,suffix就是cpp。

  • $? 比目標(biāo)文件新的依賴文件。

比如下面這條規(guī)則:

 %: %.c
# commands to execute (built-in):
 $(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@

LINK.c的定義如下:

LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)

CC的定義如下:

CC = cc

而且CFLAGS、CPPFLAGS、LDFLAGS、TARGET_ARCH默認(rèn)都為空。
最后原來(lái)的規(guī)則等同于:

%: %.c
 cc $^ -o $@

所以本文開(kāi)頭的編譯hello,只需簡(jiǎn)簡(jiǎn)單單的Makefile:

hello:

就可得到最終的編譯命令:

cc hello.c -o hello

所以,參考make -p命令輸出的make內(nèi)置規(guī)則,編寫自己程序的Makefile是個(gè)不錯(cuò)的編程習(xí)慣和學(xué)習(xí)如何熟練使用Make的途徑。

以上是“C/C++中cmake怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站aaarwkj.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文標(biāo)題:C/C++中cmake怎么用-創(chuàng)新互聯(lián)
URL鏈接:http://aaarwkj.com/article16/csoegg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、手機(jī)網(wǎng)站建設(shè)品牌網(wǎng)站制作、網(wǎng)站策劃、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
亚洲国产精品区一区二区| 国产91九色视频在线| 日韩精品中文字幕电影| 亚洲欧美国产另类综合| 日韩一区二区三级电影| 免费av在线观看日韩| 日本一区二区三区不卡在线| 日本免费一区二区在线视频| 青青草原三区在线播放| 欧美日韩一区精品视频| 亚洲国产a级一区二区| 亚洲一区二区三区av蜜桃| 日本精品在线一区二区| 亚洲成a人片777777久久| 久青青国产综合自拍视频在线观看| 成人粉嫩av一区二区白浆| 成人黄色av免费在线观看| 不卡在线视频中文字幕| 精品国内日本一区二区| 很色很污无遮挡的网色污| 日韩人妻中文字幕乱码一区| 黄色免费av片在线观看| 91精品国产老熟女在线| 99久久免费精品老色| 久久国产麻豆精品电影| 国产国产乱老熟女视频网站| 91精品欧美综合在线| 91手机国产三级在线| 日本亚洲欧洲一区二区| 国产亚洲欧美精品在线观看| 人人妻人人澡人人爽的视频| 蜜桃国产精品视频网站| 亚洲一区二区精品999| 成人精品国产一区二区| 日本免费观看一区久久| 五月婷婷六月丁香在线观看| 熟女人妻av五十路六十路| 激情毛片av在线免费看| 日韩熟女人妻一区二区| 欧美日韩亚洲一区二区搜索| 无遮挡国产精品一级二级三级视频 |