--- title: C/C++ Third Library 安裝步驟 tags: 其他 --- 在介紹步驟前,需要先講解兩大概念 # 編譯器在編譯時到底做了甚麼 雖然搜尋一下就有很多介紹了,但是大致的概念一定要記得 也就是那四大步驟 - 預處理 Preprocessing - 編譯 Compilation - 組譯 Assembly - 連結 Linking # 如何在編譯時串起多個檔案 當一個專案被拆成很多部分,由多個團隊共同開發的時候 想要將這些檔案在編譯後連結起來,會是個非常複雜的問題 於是會需要寫出 MakeFile 來梳理這些流程 搭配使用 make 這個工具自動化的編譯、連結和測試等等 >Windows 中就是 Mingw 中的 mingw32-make.exe 但是當專案真的真的很大的時候,MakeFile 也會變得很難寫 於是就有了 Cmake 這個工具幫我們自動化產生 MakeFile 當然 Cmake 的文件就得要自己寫了 # 下載 Third party library 的 Source 時的簡單流程 ## 1. CMake 首先,他們的 Source File 裡面一定可以找到一個 `CMakeLists.txt` ![](https://drive.google.com/uc?id=195NVEYPckCRX6w6pLYEJTW79qdCFXWcn&export=download) 這就是你在終端機下 cmake 指令時的檔案位置 但是不是單單的對該位置輸入 cmake 還需要指定編譯器的位置,還有輸出的資料夾位置(通常輸出的資料夾會叫 build) 用 cmake 的 GUI 可以比較快且方便的選擇 ![](https://drive.google.com/uc?id=1TfdPHDGtLPWnqt2aBCbQH2eQaaiSbzj5&export=download) 下面是選 source 跟 build 資料夾的位置 ![](https://drive.google.com/uc?id=1OAtHfvnWEIRXfH7PhKqH8bvOIHebHmC_&export=download) 然後底下的 Generate 按鈕按下去 ![](https://drive.google.com/uc?id=1NgjrJmWM0eDDhFwTAmBP1-XwcuTIqZW6&export=download) 會跳出這個視窗,底下四個選項就是跟編譯器有關的選項 選第二個可以指定特定編譯器位置 ![](https://drive.google.com/uc?id=11TC8oGVJ0uIJZlS8nV3jOSeB40SJMEAa&export=download) 而上面的選單是選擇你的 MakeFile 的類型,由於我們是用 Mingw 的編譯器 所以要選擇這個類型 ![](https://drive.google.com/uc?id=1zbNIdjpRTwym6jzqmv5nF506_k7LV4hD&export=download) 按下 Next 會跑出剛剛選擇編譯器位置的選擇視窗 ![](https://drive.google.com/uc?id=1XygjScj6TiRS1LFGTM8EG8ESEt8mZdjz&export=download) 最後按 Finish 就會成功產生 MakeFile 檔案 ## 2. Make 前面完成後應該會在你的 build 資料夾內看到一個 Makefile 檔案 >要注意要選擇最上層的那個,那個才是最整合的 Makefile >通常會直接位在 build 資料夾內 ![](https://drive.google.com/uc?id=1CsSAvkF3AMO_jOi1Z6Db2WB2OcJ6JSVk&export=download) 此時在這個位置開啟終端機,下 `mingw32-make` 指令 也就是使用這個程式幫我們執行 Makefile 裡的指令 >上面也可以直接下 `make` ,只要把 mingw32-make.exe 的名字改成 make.exe 就好 >通常他會跟編譯器位在同個資料夾 執行完後,再下 `make install` 指令,結束後會看到產生一個 install 資料夾,這個資料夾內才是最後可以好好使用的資料 ![](https://drive.google.com/uc?id=1lnlDWpMSyi-i7ilX7bDzHUuFCp1SmNi2&export=download) 如果沒有下這步的話,原 build 資料夾內的 include 是沒有標頭檔可以用的 ![](https://drive.google.com/uc?id=1PIq47JpFDus4v3PI3wPCy18BhYf_c1a2&export=download) install 資料夾內的才有,而到時候使用像是 CodeBlock 等 IDE 就是要把 install 內的 include 資料夾位置告訴 IDE ![](https://drive.google.com/uc?id=1xMvmkdYYf_PggUAWwPh-N2yGA8olmtPS&export=download) Linker 的設定則是將這兩個資料夾的位置(和檔案)告訴 IDE 裡面是編譯好的 library 和 dll 檔 ![](https://drive.google.com/uc?id=1KMYJ7oIxt4Mj5HmdCkLiW6wJaUuJFYUd&export=download) # Refference 過程中查了太多的東西了,現在要寫成 MD 反而想不起來 但總之大致就是分成三項,以及其他的細項 依照底下的關鍵字就可以查到很多資料了 - 編譯器的四大步驟 - 動態、靜態連結 - gcc/g++ 參數 (-I, -l, -L...) - 上面的參數要注意一個是 "小寫L" 一個是 "大寫I" - Include Path 和 Link Path - MakeFile - 用途和語法 - Cmake - 用途和語法 順便附上一些在寫這份時又發現很好的資料 - [5分钟理解make/makefile/cmake/nmake](https://zhuanlan.zhihu.com/p/111110992) ### P.S. - 重新查詢了一次資料才發現好像很推薦要讀《程式設計師的自我修養》這本書,改天來去總圖找找 - 非常感謝有朋友需要幫忙,如果沒有的話就不會有契機寫出上面的內容