本書主要介紹C和C++程序構建的相關知識,包括直接調用C和C++編譯器完成構建的基礎內容,以及使用CMake完成項目構建的相關內容。全書先介紹市面上C和C++的主流編譯器及其相關命令行工具、Makefile等的使用,抽象出與項目構建相關的概念模型,再介紹CMake腳本語言的基礎語法、常用命令等,最后介紹與CMake項目構建相關的內容。本書含有兩個實踐章節,借助CMake腳本語言,分別構建了快速排序算法程序、手寫數字識別庫及配套命令行工具。
本書適合有C和C++編程基礎,希望了解或應用CMake工具的人閱讀,也適合想要構建跨平臺C和C++程序的開發人員閱讀。
打牢基礎,擁抱現代CMake!
由淺入深:從使用命令行構建C和C++程序的方法和CMake基礎語法講起,方便入門。
案例豐富:本書介紹了大量CMake實用命令,幫助讀者快速理解和上手。
活學活用:包含快速排序算法和手寫數字識別庫的應用案例。
緊跟潮流:全書采用CMake 3.20示范。
許宏旭,資深軟件工程師,曾就職于微軟(亞洲)互聯網工程院,從事自然語言處理等相關工程研發工作,參與過Bing搜索引擎、Office 365等大型項目,具有多年使用CMake組織C++復雜項目的開發經驗。
第 1 章 構建之旅...1
1.1 單源文件程序:您好,世界!...1
1.2 構建多源程序...3
1.2.1 輸出另一源程序的字符串...3
1.2.2 一個需要漫長編譯過程的程序...3
1.2.3 按需編譯:快速構建變更...4
1.2.4 使用 Makefile 簡化構建...7
1.3 構建靜態庫...9
1.4 構建動態庫...12
1.4.1 Windows 中動態鏈接的原理...13
1.4.2 Linux 中動態鏈接的原理...17
1.5 引用第三方庫...22
1.5.1 下載 Boost C++庫...22
1.5.2 引用 Boost C++頭文件庫...22
1.5.3 安裝 Boost C++庫...24
1.5.4 鏈接 Boost C++庫...25
1.6 旅行筆記...29
1.6.1 構建的基本單元:源程序...29
1.6.2 核心的抽象概念:構建目標...30
1.6.3 目標屬性...31
1.6.4 使用要求的傳遞性...34
1.6.5 目錄屬性...40
1.6.6 自定義構建規則...40
1.6.7 尾聲...41
第 2 章 CMake 簡介...42
2.1 為什么使用 CMake...43
2.1.1 平臺無關和編譯器無關...43
2.1.2 開源自由和優秀的社區生態...44
2.1.3 強大通用的腳本語言...44
2.1.4 穩定地向后兼容...44
2.1.5 持續不斷地改進和新特性...45
2.2 安裝 CMake...45
2.2.1 在 Windows 中安裝 CMake...45
2.2.2 在 Linux 中安裝 CMake...46
2.2.3 在 macOS 中安裝 CMake...47
2.3 您好,CMake!...48
第 3 章 基礎語法...49
3.1 CMake 程序...49
3.1.1 目錄程序(CMakeLists.txt)...50
3.1.2 腳本程序(