導航:首頁 > 文件教程 > makefile文件格式

makefile文件格式

發布時間:2024-09-28 17:11:04

① .mk是什麼格式的文件,用什麼軟體打開

.mk文件是 makefile 文件,makefile定義了一系列的規則來指定,哪些文件需回要先編譯,哪些文件需要後答編譯,哪些文件需要重新編譯,甚至於進行更復雜的功能操作,因為makefile就像一個Shell腳本一樣,其中也可以執行操作系統的命令。
makefile帶來的好處就是——「自動化編譯」,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟體開發的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大多數的IDE都有這個命令,比如:Delphi的make,Visual C++的nmake,linux下GNU的make。可見,makefile都成為了一種在工程方面的編譯方法。

② linux中用C語言編寫完模塊後怎麼編寫makefile文件用到什麼命令以什麼格式編寫

vi Makefile #打開vi編輯器
在編輯器里輸入以下內容:

#當只有一個文件需要編譯的時候
finame:filename.c #冒號前面是要編譯成的目標文件(可以任意命名),後面是你編寫的C文件
gcc -o filename filename.c #gcc前面是按Tab製表符

#filename:filename.c 是指filename文件的生成要依賴filename.c文件
#然後換行後按Tab鍵,然後編寫編譯規則

#make命令一般是同時編譯多個文件時才使用,以下是同時編寫多個獨立的C文件
#filename1和鄭鄭filename2……沒有依賴關系
filename1:filename1.c
gcc -o filename1 filename1.c
filename2:filename2.c
gcc -o filename2 filename2.c

#makefile編譯多個需要依賴(互相調用的文件)
main:main.o file1.o file2.o #main是最終要生成的目標文件,後面.o就是需要調用的文件的對象文件
main.o:main.c
gcc -c main.c #生成main.o對象文件,main.c裡面是有主函數的
file1.o:file1.c
gcc -c file1.c
file2.o:file2.c
gcc -c file2.c
#以上差不多就可以用了
#一下是我找的例子

#include "mytool1.h"
void mytool1_print(char *print_str)
{
printf("This is mytool1 print %s\n",print_str);
}
/* mytool2.h */
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str);
#endif
/* mytool2.c */
#include "mytool2.h"
void mytool2_print(char *print_str)
{
printf("This is mytool2 print %s\n",print_str);
}
當然由於這個程序是很短的我們可以這樣來編譯
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c
gcc -o main main.o mytool1.o mytool2.o
這樣的話我們也可以產生main 程序,而且也不時很麻煩.

# 這是上面那個程序的Makefile 文件
main:main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o
main.o:main.c mytool1.h mytool2.h
gcc -c main.c
mytool1.o:mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o:mytool2.c mytool2.h
gcc -c mytool2.c
有了這個Makefile 文件,不過我們什麼時候修改了源程序當中的什麼文件,我們只要執行
make 命令,我們的編譯器都只會去編譯和我們修改的文件有關的文件,其它的文件她連理
都不想去理的。
下面我們學習Makefile 是如何編寫的。
在Makefile 中也#開始的行都是注釋行.Makefile 中最重要的是描述文件的依賴關系的說
明.一般的格式是:
target: components
TAB rule
第一行表示的是依賴關系.第二行是規則.
比如說我們上面的那個Makefile 文件的第二行
main:main.o mytool1.o mytool2.o
表示我們的目標(target)main 的依賴喊槐頌對象(components)是main.o mytool1.o mytool2.o
當倚賴的對象在目標修明慧改後修改的話,就要去執行規則一行所指定的命令.就象我們的上
面那個Makefile 第三行所說的一樣要執行 gcc -o main main.o mytool1.o mytool2.o
注意規則一行中的TAB 表示那裡是一個TAB 鍵

③ make命令生成什麼文件

make 命令後跟的文件名是 Makefile 文件,如果你沒有後帶文件名就自動搜索本目錄下名為「Makefile」的文件,這個文件是沒有後綴名的。至於它生成了什麼就看你的 Makefile 文件怎麼描述了。從你所問的內容來看,你需要學習「Makefile 文件的結構」,你就用這引號里的內容作為關鍵詞搜索一下吧,網上有很多材料,你花半小時看看其中一篇估計就可以了。

④ 使用linux編程怎麼寫makefile

Makefile語法基礎
在Linux下,自動化編譯工具是通過make命令來完成的(姿弊一些工具廠商也提供了它們自己的make命令,如gmake等),make命令的基本格式如下:
make
[-f
makefile]
[label]
它可以通過-f參數指定輸入文件,當省略-f參數時,默認輸入文件名為Makefile,由於我們通常不用這個-f參數,往往就用默認的Makefile文件名。
Makefile是一個文本文件,它是基於一定的語法規則的,它的基本執行規則定義如下:
target
:
[prerequisites]
command
target
標簽,模鄭用於標志當前構建的規則,它也可以是文件。
prerequisites
依賴項,在構建該標簽的時候先執行的規則
command
make需要執行的命令。(任意的Shell命令)
注意:Makefile的target是頂格寫的,而Command需要加一個Tab鍵。我這里為了排版看起來舒服點,每一行都多加了一個Tab鍵,如果要使用本文的Makefile示例,請去掉各行的第一個Tab鍵,否則make的時候報錯。
例如,我們編寫一個簡單的Makefile:
clean:
@echo
"clean"
all:
@echo
"all"
當我們直接執行make命令的時候,輸出如下:
tianfang
>
make
clean
tianfang
>
make
all
all
tianfang
>
make
clean
clean
從中我們可以看到:默認情跡碼族況下構建第一個標簽。可以通過在命令行參數中通過參數構建指定標簽。

⑤ 在window下寫mekefile保存為什麼格式

makefile是文本文件,也就是說:和C/C++/JAVA等的源程序一樣,它是沒有特殊格式的純ASCII文件,只有ASCII中回車、換行、空格、製表等基本格式。
任何用來進行無格式文本編輯的軟體都可以打開並編輯它。如Win自帶的記事本、C/C++語言編輯器、UltraEdit等。
makefile是一種腳本,編寫用來建立一定的目標,而該目標一般依賴於另外一些文件的跟新。

⑥ makefile教程

基於 Make 命令教程 - 阮一峰的網路日誌 (ruanyifeng.com) 總結,可以將make看作一個自頂向下的構建工具

在makefile相同目錄下執行 make 可查看效果

makefile文件名默認 Makefile 或 makefile .也可以指定文件: make -f rules.txt 或者 make --file=rules.txt

如果 前置條件 滿足,執行 命令 構建 目標

目標可以是文件,也可以是某個操作的名字

運行 make clean 可以執行這個操作:

如果make檢測到當前目錄中存在clean文件,就不會執行clean操作,因此最好標明clean是個操作

前置條件通常是一組文件名,用空格分割,指定了目標是否重新構建的標准:只要有一個前置文件不存在,或者有過更新(前置文件的修改時間晚於目標文件),目標就需要重新構建

如果當前目錄沒有source.txt,make會首到makefile的下面去尋找有沒有生成source.txt的目標

命令行首默認必須是一個tab鍵!!!,如果測試過程有報錯記得檢查下 ,如果想替換,可用.RECIPEPREFIX替換(對整個文件生效 (The .RECIPEPREFIX is only supported since 3.82

每條命令都在單獨的shell中執行,這些shell沒有關聯,也沒有繼承關系

解決辦法就是通過寫成一行

或者用反斜杠轉義

最後一個辦法是加上 .ONESHELL: 命令 (同上

# 表示注釋

正常情況下,make會列印每條命令,即使注釋也會列印,在命令前面加@可以關閉列印

通配符

用來指定一組符合條件的文件名,與bash類似 * ? [...]

允許對文件名進行模式匹配,匹配符是%

下面的命令將 file1.c 編譯為file1.o

允許使用 = 自定義變數

調用shell變數,需要兩個$$,因為make命令會使$轉義

變數支持引用

為了區分生效時間,分成四類 gnu make - What is the difference between the GNU Makefile variable assignments =, ?=, := and +=? - Stack Overflow

內置變數

$(CC)指向當前編譯器

$(MAKE)指向當前make工具

詳細如表 https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html

自動變數

https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html

判斷和循環 與bash相同

函數格式

內置函數

https://www.gnu.org/software/make/manual/html_node/Functions.html

閱讀全文

與makefile文件格式相關的資料

熱點內容
在虛擬機安裝iso鏡像文件 瀏覽:396
蘋果電腦叫什麼app 瀏覽:522
網站轉介面怎麼用 瀏覽:520
品勝數據線如何 瀏覽:943
程序員軟考真題 瀏覽:178
1個cad文件怎麼輸出多張pdf 瀏覽:849
編程哪個代碼排最前 瀏覽:56
通貨膨脹數據什麼時候發布 瀏覽:416
系統修復桌面文件沒了 瀏覽:146
linuxoraclecpu100 瀏覽:459
百度視頻怎麼保存到文件夾 瀏覽:264
cad文件里圖紙快速打開 瀏覽:999
手機qq不能下載群文件 瀏覽:894
榮耀6怎麼升級極客 瀏覽:487
excel批量獲取文件夾中的文件名 瀏覽:875
華碩win10進入大白菜pe 瀏覽:672
如何做最有效的資料庫 瀏覽:342
網易編程和編程貓哪個好 瀏覽:564
如何展示四維數據 瀏覽:730
cad載入vlx文件 瀏覽:128

友情鏈接