cmake 从入门到入土
為什么需要CMake
你或許聽過好幾種 Make 工具,例如 :
- GNU Make
- QT 的 qmake
- 微軟的 MS nmake
- BSD Make(pmake)Makepp
這些 Make 工具遵循著不同的規范和標準,所執行的 Makefile 格式也千差萬別。這樣就帶來了一個嚴峻的問題:如果軟件想跨平臺,必須要保證能夠在不同平臺編譯。而如果使用上面的 Make 工具,就得為每一種標準寫一次 Makefile ,這將是一件讓人抓狂的工作。
CMake就是針對上面問題所設計的工具:它首先允許開發者編寫一種平臺無關的 CMakeList.txt 文件來定制整個編譯流程,然后再根據目標用戶的平臺進一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。從而做到“Write once, run everywhere”。
CMake是什么
CMake 是一個跨平臺的安裝(編譯)工具,可以用簡單、統一的語句來描述所有平臺的安裝或編譯過程。能夠輸出不同編譯器的 makefile 或 project 文件。
CMake 使用 CMakeLists.txt文件作為項目組織文件,CMake 并非跨平臺編譯工具,而是項目構建工具,可以在不同的平臺上根據構建參數生成工程項目,例如 Windows 平臺下可以構建 Visual Studio 工程 或 NMake 工程,可選指定 Visual Studio 的版本;在 Unix 構建 Makefile 工程 。
CMake的優勢
- 開放源代碼,使用 BSD 許可證發布
- 跨平臺,可以生成 native 編譯配置文件。在 linux/unix 平臺可以生成 makefile,在 mac 平臺可以生成 xcode,在 windows 平臺可以生成 msvc 工程的配置文件,能夠管理大型項目
- 簡化編譯構建過程和編譯過程,只需要 cmake + make 就可以
- 高效率
- 可擴展,可以為 cmake 編寫特定功能的模塊,擴充 cmake 功能
cmake系列目錄
-
cmake:centos、win中安裝cmake(基礎)
-
cmake:Hello cmake(上)
-
cmake:同一目錄下多個源文件(中)
-
cmake:不同目錄下多個源文件(下)
-
cmake:定義并打印某個消息
-
cmake:add_library生成靜態庫和動態庫
-
cmake:生成動態鏈接庫并使用
-
cmake:make install安裝項目
-
cmake:find_package 添加第三方依賴庫
-
cmake:pkg_check_modules
-
cmake:檢查當前是什么操作系統(CMAKE_SYSTEM_NAME)
-
cmake:設置C++標準
-
cmake:設置編譯選項
-
cmake:project指定C/C++混合編程
-
cmake:pkg_check_modules
-
cmake:add_definitions定義的變量可以直接在程序中使用
-
cmake:在 CMake 生成的 VS2015 工程中保持源碼文件的目錄組織
-
cmake:切換生成器
-
cmake:CMakeList鏈接mysql出現/usr/bin/ld: 找不到 -lmysqlclient
-
cmake:解決c++11的phread庫問題:undefined reference to `pthread_create’
-
cmake:cl is not a full path and was not found in the PATH.
-
cmake:Invalid escape sequence \U
-
automake:hello automake
-
編譯工具:makefile、autoconf、automake、libtool的關系
參考
- cmake官方文檔
- cmake官方入門教程
- cmake:設置編譯選項的講究(add_compile_options和CMAKE_CXX_FLAGS的區別)
- Cmake語句find_package()函數
- CMake快速入門教程:實戰
- “輕松搞定CMake”系列博客概述
- 現代cmake語法學習
- Linux下CMake簡明教程
- CMake學習資源匯總
- 等待研究
- 其他教程
總結
以上是生活随笔為你收集整理的cmake 从入门到入土的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android手机FOTA升级的大概流程
- 下一篇: python实现网络测速