makefile 编译不同目录下的源文件
生活随笔
收集整理的這篇文章主要介紹了
makefile 编译不同目录下的源文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如題,今天我們來解決 在makefile文件中 如何配置,編譯在不同目錄下的源文件,因為有時候有這樣的場景嘛。
測試場景
目錄結構如下,頭文件在include下,源文件在 src下,客戶端程序main.c 在 03makefile文件下。如何來編譯main.c呢?
makefile文件內容
文件內容有詳細解釋喲,由于在不同目錄下,那么我們在編譯.c文件時,他們的路徑就會有多個,模式匹配就要寫多個。
target = app #由于 .c文件在不同的文件下,那么匹配模式 要匹配不同文件下的%.c文件 src1 = $(wildcard ./src/*.c) src2 = $(wildcard ./*.c) obj1 = $(patsubst %.c,%.o,$(src1)) obj2 = $(patsubst %.c,%.o,$(src2)) src = ./src/$(target):$(obj1) $(obj2)gcc $^ -o $@ # gcc $(obj) -o $(target) #編譯 src下的.c文件 為.o文件 %.o:$(src)%.cgcc -c $< -o $@ #編譯 當前文件下的main.c文件 %.o:%.cgcc -c $< -o $@ .PHONY:clean #防止 外面有clean文件 阻止執行clean clean:#-mkdir /root/aaa #在命令前添加 - 當前命令出錯,仍然可以往后面執行-rm $(target) $(obj1) $(obj2) -f hello:echo "hello world"檢驗結果
總結
以上是生活随笔為你收集整理的makefile 编译不同目录下的源文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统编程:lseek扩展文件大
- 下一篇: Linux系统编程:验证kernel内核