九色91_成人精品一区二区三区中文字幕_国产精品久久久久一区二区三区_欧美精品久久_国产精品99久久久久久久vr_www.国产视频

Hello! 歡迎來到小浪云!


make makefile cmake qmake都是什么,有什么區別?


作者:玟清 鏈接:https://www.php.cn/link/bf9b5a850f9afd054eb3bcd288c246c9 來源:知乎 著作權歸作者所有,轉載請聯系作者獲得授權。

  1. make 用于執行Makefile文件。 2. Makefile 是類unix環境(如Linux)下的一種類似批處理的“腳本”文件。其基本語法包括目標、依賴和命令,只有當目標文件不存在或比依賴文件更新時,命令才會執行。由此可見,Makefile 和 make 可用于任何工作,不僅限于編程,例如可以用來管理LaTeX。 3. Makefile 和 make 可以視為類Unix環境下的項目管理工具,但其抽象程度較低,且在Windows下對visual studio用戶不友好,因此出現了跨平臺項目管理工具cmake。 4. cmake 是跨平臺項目管理工具,它使用更抽象的語法來組織項目。雖然仍然包括目標和依賴等概念,但更為抽象和友好。例如,你可以使用“math”表示數學庫,而無需具體指定是math.dll還是libmath.so。在Windows下,它可以生成Visual Studio工程文件,在Linux下生成Makefile,甚至可以生成eclipse工程文件。也就是說,從同一個抽象規則出發,它為各個編譯器定制工程文件。 5. cmake 是更高抽象層次的項目管理工具,執行的文件是CMakeLists.txt。 6. qmake 是qt專用的項目管理工具,對應的工程文件是.pro。在Linux下,它也會生成Makefile,當然,在命令行下需要手動執行qmake,但在Qt Creator這個專用ide中打開.pro文件時,不需要手動處理qmake的繁瑣細節。 總結一下,make 用于執行Makefile,cmake 用于執行CMakeLists.txt,qmake 用于處理.pro工程文件。Makefile的抽象層次最低,cmake 和 qmake 在Linux等環境下最終還是會生成一個Makefile。cmake 和 qmake 支持跨平臺,cmake 通過生成指定編譯器的工程文件實現跨平臺,而qmake 則自成體系。具體使用時,在Linux下,小型工程可以手動編寫Makefile,大型工程可以使用automake生成Makefile,要實現跨平臺,可以使用cmake。如果GUI使用了Qt,也可以使用qmake + .pro來管理工程,這也是跨平臺的。當然,cmake 中也有針對Qt的一些規則,并替代qmake處理Qt相關的命令。另外,需要指出的是,make 和 cmake 的主要命令只有一條,make 用于處理Makefile,cmake 用于轉譯CMakeLists.txt,而qmake 是一個體系,用于支撐一個編程環境,它還包含除qmake 之外的其他多條命令(如uic、rcc、moc)。

上個簡圖,其中cl表示Visual Studio的編譯器,gcc表示Linux下的編譯器

make makefile cmake qmake都是什么,有什么區別?作者:輝常哥 鏈接:https://www.php.cn/link/ce3f64221a4fbc9ed30d001c572bc5a3 來源:知乎 著作權歸作者所有,轉載請聯系作者獲得授權。

  1. gcc 是gnu Compiler Collection(GNU編譯器套件),也可以簡單認為是編譯器,它可以編譯多種編程語言(包括C、c++、Objective-C、Fortran、Java等)。 2. 當你的程序只有一個源文件時,可以直接使用gcc命令編譯它。 3. 但是當你的程序包含多個源文件時,使用gcc命令逐個編譯會很容易混亂且工作量大。 4. 因此出現了make工具。make工具可以視為一個智能的批處理工具,它本身不具備編譯和鏈接功能,而是通過調用makefile文件中用戶指定的命令來進行編譯和鏈接。 5. makefile是什么?簡單來說,就像一首歌的樂譜,make工具就像指揮家,指揮家根據樂譜指揮整個樂團如何演奏,make工具就根據makefile中的命令進行編譯和鏈接。 6. makefile命令中就包含了調用gcc(也可以是其他編譯器)去編譯某個源文件的命令。 7. 在一些簡單的工程中,makefile完全可以手動編寫,但當工程非常大時,手寫makefile也非常麻煩,如果換了平臺,makefile又需要重新修改。 8. 這時就出現了cmake工具,cmake可以更簡單地生成makefile文件供make使用。當然,cmake還有其他功能,可以跨平臺生成對應平臺可用的makefile,無需再手動修改。 9. 但是cmake根據什么生成makefile呢?它需要根據一個名為CMakeLists.txt的文件(學名:配置文件)來生成makefile。 10. 那么CMakeLists.txt文件由誰編寫呢?當然是你自己手寫的。 11. 如果你使用IDE,如Visual Studio,通常它都能幫你處理好,你只需點擊那個三角形按鈕。 12. 接下來是qmake,qmake是什么?先說一下Qt這個東西。Qt是跨平臺的C++圖形用戶界面應用程序開發框架。它既可以開發GUI程序,也可以用于開發非GUI程序,比如控制臺工具和服務器。簡單來說,就是C++的第三方庫,使用這個庫你可以很容易生成Windows、Linux、Mac OS等平臺的圖形界面。現在的Qt還包含了開發各種軟件通常需要用到的功能模塊(如網絡、數據庫xml線程等),比直接使用C++(只帶標準庫的那種)要方便和簡單。 13. 你可以用Qt輕松實現非常復雜的功能,是因為Qt對C++進行了擴展,你寫一行代碼,Qt在背后幫你寫了幾百上千行,而這些額外的代碼就是靠Qt專有的moc編譯器(元對象編譯器)和uic編譯器(用戶界面編譯器)來重新翻譯你那一行代碼。問題來了,在程序編譯前必須先調用moc和uic對Qt源文件進行預處理,然后再調用編譯器進行編譯。普通的makefile文件不適用,因為它無法對Qt源文件進行預處理。因此,qmake就出現了。 14. qmake工具是由Qt公司開發,用來生成Qt專用的makefile文件,這種makefile文件可以自動智能調用moc和uic對源程序進行預處理和編譯。qmake當然也必須是跨平臺的,像cmake一樣可以對應各種平臺生成對應的makefile文件。 15. qmake是根據Qt工程文件(.pro)來生成對應的makefile的。工程文件(.pro)相對來說比較簡單,一般工程你都可以自己手寫,但通常都是由Qt的開發環境Qt Creator自動生成的,你只需點擊那個邪惡的三角形按鈕就完成了。 16. 還沒有完,由于qmake非常簡單好用且支持跨平臺,而且可以獨立于它的IDE,所以你也可以將其用于非Qt工程,照樣可以生成普通的makefile,只需在pro文件中加入CONFIG -= qt即可。 17. 那么qmake和cmake有什么區別呢?不好意思,cmake同樣支持Qt程序,cmake也能生成針對Qt程序的特殊makefile,只是cmake的CMakeLists.txt編寫起來比qmake的pro文件復雜一些。qmake是為Qt量身打造的,使用起來非常方便,但cmake的功能比qmake強大。一般的Qt工程你就直接使用qmake就可以了,cmake的強大功能一般人是用不到的。當你的工程非常大時,又有Qt部分的子工程,又有其他語言的部分子工程,據說使用cmake會更方便,但我也沒試過。

相關閱讀

主站蜘蛛池模板: 精品视频在线免费观看 | 九九精品影院 | 国产精品国产成人国产三级 | 国产免费播放视频 | 欧美激情久久久 | 97视频在线免费 | 香蕉久久网 | 日韩欧美一区二区三区在线播放 | 亚洲日本欧美日韩高观看 | 美国av毛片 | 成人精品一区二区户外勾搭野战 | 欧美日韩亚| www午夜视频| 亚洲精选久久 | 亚洲超碰在线观看 | 亚洲精品日韩在线 | 亚洲国产一区二区三区 | 欧美视频福利 | 精品无码久久久久久久动漫 | 草久久久 | 国内久久 | 欧美日韩专区 | 日韩网站在线 | 国产精品久久国产精品 | 成人精品一区亚洲午夜久久久 | 国产成人网 | 欧美一二三 | 亚洲综合成人网 | 久久亚洲一区二区 | 综合国产| 在线一区| 国产午夜精品久久久 | 在线观看av免费 | 99精品久久 | 欧美性生活网 | 国产精品久久久久国产a级 欧美日韩国产免费 | 国产一区2区 | 色网站在线免费观看 | 国产精品不卡视频 | 成人高清网站 | 欧美一区二区三区四区视频 |