http://blog.csdn.net/zhangchen1003/article/details/51030112
轉(zhuǎn)自:http://www.zhihu.com/question/36609459 輝常哥
1.gcc是GNU Compiler Collection(就是GNU編譯器套件),也可以簡(jiǎn)單認(rèn)為是編譯器,它可以編譯很多種編程語(yǔ)言(括C、C++、Objective-C、Fortran、Java等等)。
2.當(dāng)你的程序只有一個(gè)源文件時(shí),直接就可以用gcc命令編譯它。
3.但是當(dāng)你的程序包含很多個(gè)源文件時(shí),用gcc命令逐個(gè)去編譯時(shí),你就很容易混亂而且工作量大
4.所以出現(xiàn)了make工具
make工具可以看成是一個(gè)智能的批處理工具,它本身并沒(méi)有編譯和鏈接的功能,而是用類似于批處理的方式—通過(guò)調(diào)用makefile文件中用戶指定的命令來(lái)進(jìn)行編譯和鏈接的。
5.makefile是什么?簡(jiǎn)單的說(shuō)就像一首歌的樂(lè)譜,make工具就像指揮家,指揮家根據(jù)樂(lè)譜指揮整個(gè)樂(lè)團(tuán)怎么樣演奏,make工具就根據(jù)makefile中的命令進(jìn)行編譯和鏈接的。
6.makefile命令中就包含了調(diào)用gcc(也可以是別的編譯器)去編譯某個(gè)源文件的命令。
7.makefile在一些簡(jiǎn)單的工程完全可以人工手下,但是當(dāng)工程非常大的時(shí)候,手寫(xiě)makefile也是非常麻煩的,如果換了個(gè)平臺(tái)makefile又要重新修改。
8.這時(shí)候就出現(xiàn)了Cmake這個(gè)工具,cmake就可以更加簡(jiǎn)單的生成makefile文件給上面那個(gè)make用。當(dāng)然cmake還有其他功能,就是可以跨平臺(tái)生成對(duì)應(yīng)平臺(tái)能用的makefile,你不用再自己去修改了。
9.可是cmake根據(jù)什么生成makefile呢?它又要根據(jù)一個(gè)叫CMakeLists.txt文件(學(xué)名:組態(tài)檔)去生成makefile。
10.到最后CMakeLists.txt文件誰(shuí)寫(xiě)?。坑H,是你自己手寫(xiě)的。
11.當(dāng)然如果你用IDE,類似VS這些一般它都能幫你弄好了,你只需要按一下那個(gè)三角形
作者:輝常哥
鏈接:http://www.zhihu.com/question/36609459/answer/89743845
來(lái)源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
cmake
CMake是一個(gè)跨平臺(tái)的安裝(編譯)工具,可以用簡(jiǎn)單的語(yǔ)句來(lái)描述所有平臺(tái)的安裝(編譯過(guò)程)。他能夠輸出各種各樣的makefile或者project文件,能測(cè)試編譯器所支持的C++特性,類似UNIX下的automake。只是 CMake 的組態(tài)檔取名為 CmakeLists.txt。Cmake 并不直接建構(gòu)出最終的軟件,而是產(chǎn)生標(biāo)準(zhǔn)的建構(gòu)檔(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建構(gòu)方式使用。
posted on 2016-11-30 08:40
思月行云 閱讀(247)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
C\C++