[英]How to compile with headers and a create a Makefile - C
我正在嘗試使用按照以下結構組織的源代碼編譯和創建 Makefile:
|-- build
|-- include
| \-- functions.h
\-- src
|-- functions.c
\-- main.c
那里編寫的代碼已經在 IDE 上進行了測試,所以我知道它可以工作。 我只需要編譯它,但我不知道如何執行 2 個擴展名為 .c 的文件和 .h 文件。 另外,我需要為此創建一個makefile。
怎么樣?
一個Makefile
只是一些文本文件(其中,當它們啟動命令行選項卡字符至少顯著)。 使用一些源代碼編輯器來創建或改進它; 我更喜歡GNU emacs所以推薦它,但你可以使用其他一些編輯器(例如vim 、 gedit
等...),這是一個品味問題。 順便說一句,不要忘記使用一些版本控制系統(我推薦git )。
在創建Makefile
之前,花一些時間閱讀make
的 文檔。 請注意眾多內置規則(您可以通過運行make -p
獲得)並利用它們。
如何執行 2 個 .c 文件和 .h 文件。
您不執行.c
文件,而是將它們提供給 C編譯器。 我推薦使用GCC (或者Clang/LLVM )作為你的 C 編譯器。
您可能應該將CC
make 變量(它提供默認的 C 編譯器)設置為gcc
,並將CFLAGS
變量(它提供默認的編譯器標志)。
所以請閱讀有關Invoking GCC 的文檔。 您肯定希望使用所有警告和調試信息進行編譯。
因此,我建議在你的Makefile
有以下兩行
CC= gcc
CFLAGS= -Wall -Wextra -g
當然,您的Makefile
還需要其他行。 我讓你閱讀更多並進行實驗。 這和那應該是鼓舞人心的。
您可能想在Makefile
提及對頭文件的依賴。
所以我讓你寫你的Makefile
。 將其視為源代碼,因此請謹慎備份和版本控制。
順便說一句,對於像您這樣的小程序,我認為擁有src/
和include/
目錄沒有用,而且我相信引入build/
目錄只會增加不必要的復雜性。 天啊。
那里編寫的代碼已經在 IDE 上進行了測試,所以我知道它可以工作。
這可能是一種錯覺。 有時,您可能會因為某些未定義的行為而倒霉,這些行為只是“看起來”有效,但實際上是一個錯誤。 請參閱此答案並按照我在那里提供的鏈接進行操作。
有許多使用make
構建的免費軟件項目; 在github和其他地方尋找一些。 有時Makefile
是自己生成的(例如使用cmake 、 qmake或autoconf ),但這在您的簡單情況下是不值得的。
附注。 不要指望 StackOverflow 來做你的功課。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.