Linux C語言C++ makefile文件編寫

ps: 這里 不是很明白?尤其是 后面 三個變量,什么區別?
$@ 代表目標
$^ 代表全部依賴
$< 第一個依賴
$? 第一個變化的依賴

  1. makefile
makefile 命名規則makefileMakefile
makefile 三要素目標依賴規則命令
寫法:
目標:依賴
tab鍵規則命令
可以定義變量 srcFiles=main.c jia.c jian.c cheng.c chu.c
變量的使用:$(srcFiles), $(變量名)
makefile隱含規則:默認處理第一個目標
函數:wildcard 可以進行文件匹配patsubst 內容的替換
makefile的變量$@ 代表目標$^ 代表全部依賴$< 第一個依賴$? 第一個變化的依賴

代碼示例:

srcFiles=$(wildcard *.c)
objFiles=$(patsubst %.c, %.o, $(srcFiles))
headPath=./head
# 定義偽目標, 如果指向生成app1,就執行 make app1
all:app1 app2app1:$(objFiles)gcc $(objFiles) -o $@ -I $(headPath)app2:$(objFiles)gcc $(objFiles) -o $@ -I $(headPath)%.o:%.cgcc -c $< -I $(headPath) -o $@#.PHONY 防止目標有歧義
.PHONY:clean alltest:# - 的作用是 就算這行出錯了,下面的也要繼續執行# @的作用是 不顯示輸出-@echo $(srcFiles)echo $(objFiles)clean:rm -rf *.orm -rf app1 app2

執行指定的makefile

make -f makefile1

注意事項:
如果出現了 :*** missing separator. Stop.錯誤

在/etc/vim/vimrc 文件里面,添加這樣一句
autocmd FileType make set noexpandtab

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382524.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382524.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382524.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu升級

apt-get update: 升級安裝包相關的命令,刷新可安裝的軟件列表(但是不做任何實際的安裝動作) apt-get upgrade: 進行安裝包的更新(軟件版本的升級) apt-get dist-upgrade: 進行系統版本的升級(Ubuntu版本的升級) do-release-upgrade: Ubuntu官方推薦的系統升級方式,若加參數-…

軟件工程學習筆記《一》什么是軟件工程

文章目錄軟件工程學習筆記目錄軟件工程過程軟件工程方法軟件質量軟件質量如何評價軟件的質量模型ISO9126模型易用性&#xff1a;效率可維護性可移植性為什么內存緩沖區是2048或4096軟件工程學習筆記目錄 [https://blog.csdn.net/csdn_kou/article/details/83754356] 單純擺出一…

linux C語言 文件相關知識01

ps:文件描述符表&#xff0c;與文件指針 有什么聯系&#xff1f;&#xff1f;&#xff1f; 1. linux 系統&#xff0c;一般一個進程 允許打開的最大文件數量是 1024&#xff0c; 對應內核區的進程控制塊&#xff08;pcb&#xff09;中的文件描述符表的范圍&#xff0c; 在shell…

linux 系統函數調用:open close read write lseek

open函數 查看函數原型 man 2 open #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);相關參數用法介紹&#xff1b; a. pathname …

PyCharm安裝和配置教程

文章目錄官網鏈接錯誤類型&#xff01;1.你的用戶名是中文解決方案PyCharm的漢化和配置PyCharm的簡單使用入門PyCharm和git安裝教程官網鏈接 www.jetbrains.com 錯誤類型&#xff01;1.你的用戶名是中文 安裝第一次各種問題&#xff01;就不多了&#xff0c;反正各種報錯 原…

linux 進程通信 pipe

pipe函數 管道函數 man pipe #include <unistd.h> int pipe(int pipefd[2]);參數介紹&#xff1a;pipefd讀寫文件描述符&#xff0c;0-代表讀&#xff0c; 1-代表寫父子進程實現pipe通信&#xff0c;實現ps aux | grep bash 功能 經常出現的問題&#xff1a; 父進程認為…

軟件工程學習筆記《二》代碼規范

文章目錄軟件工程學習筆記目錄google代碼規范節選python來自google翻譯錯誤注釋的示例命名規范import語句的規范import this 源碼軟件工程學習筆記目錄 [https://blog.csdn.net/csdn_kou/article/details/83754356] google代碼規范 https://github.com/google/styleguide 節…

Linux 進程通信之FIFO

FIFO通信&#xff08;first in first out&#xff09; FIFO 有名管道&#xff0c;實現無血緣關系進程通信。 ----創建一個管道的偽文件 a.mkfifo testfifo 命令創建 b.也可以使用函數int mkfifo(const char *pathname, mode_t mode); ----內核會針對fifo文件開辟一個緩沖區&…

PyCharm和git安裝教程

文章目錄先到官網下載git進入setting&#xff0c;如黃色部分如果你用的是github那么直接setting登陸就行了如果你是gitee的話首先進入setting然后Plugins點擊browse查找gitee如圖所示&#xff01;最后點擊重啟ok《不要自己關閉&#xff0c;否則安裝失敗》安裝好了以后,輸入你的…

linux 進程通信子mmap

mmap 文件–內存映射 函數原型 #include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);參數介紹&#xff1a; add 傳 NULL length 映射區的長度 protPROT_READ 可讀PROT_WRITE可寫 flagsMAP_SHARED 共享的&#xff0c…

malloc和calloc的區別

是否對申請的區域進行初始化而已 但是我想你也知道我們寫程序的時候多用malloc而很少用calloc&#xff0c;何解&#xff1f; 因為calloc雖然對內存進行了初始化&#xff08;全部初始化為0&#xff09;&#xff0c;但是同樣也要降低效率的 calloc相當于 p malloc(); memset(p,…

linux信號學習02

未決信號集與阻塞信號集(信號屏蔽字) 阻塞信號集&#xff1a; 將某些信號加入集合&#xff0c;對他們設置屏蔽&#xff0c;當屏蔽x信號后&#xff0c;再收到該信號&#xff0c;該信號的處理將推后(解除屏蔽后) 未決信號集&#xff1a; a. 信號產生&#xff0c;未決信號集中描述…

task_struct 結構如何查看及分析

cd /find -name sched.hvim usr/src/kernels/3.10.0862.6.3.el7.x86_64/include/linux/sched.hhttps://www.cnblogs.com/zxc2man/p/6649771.html 進程是處于執行期的程序以及它所管理的資源&#xff08;如打開的文件、掛起的信號、進程狀態、地址空間等等&#xff09;的總稱。…

linux 與信號集操作相關的函數

與信號集操作相關的函數 #include <signal.h> 清空信號集 全都為0 int sigemptyset(sigset_t *set);填充信號集 全都為1 int sigfillset(sigset_t *set);添加某個信號到信號集 int sigaddset(sigset_t *set, int signum);從集合中刪除某個信號 int sigdelset(sigset_t *s…

軟件工程學習筆記《三》代碼優化和性能測試

文章目錄軟件工程學習筆記目錄如何在開源社區提問&#xff1f;代碼審查代碼優化運行結果參數解釋代碼優化原則對常見的數據結構排序算法進行測試關于冒泡排序優化的探討結果軟件工程學習筆記目錄 [https://blog.csdn.net/csdn_kou/article/details/83754356] 如何在開源社區提…

linux信號捕捉

信號捕捉&#xff0c;防止進程意外死亡 signal函數 man signal #include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler);參數介紹&#xff1b; signum 要捕捉的信號 handler 要執行的捕捉函數指針&#xff0c…

軟件工程學習筆記《目錄》

軟件工程學習筆記《目錄》 軟件工程學習筆記《一》什么是軟件工程 軟件工程學習筆記《二》代碼規范 軟件工程學習筆記《三》代碼優化和性能測試 軟件工程學習筆記《四》需求分析

linux進程利用SIGCHLD信號,來實現父進程回收子進程

子進程執行完畢后&#xff0c;會向父進程發出 SIGCHLD信號 &#xff0c; 這段代碼實現的就是i&#xff0c;父進程接受到子進程 發出的SIGCHLD信號&#xff0c;實現對子進程進行回收&#xff0c;從而避免僵尸進程 #include <stdio.h> #include <unistd.h> #include…

WWW軟件全球使用排名

https://w3techs.com/technologies/overview/web_server/all Apache份額一直下降呀&#xff01;

軟件工程學習筆記《四》需求分析

文章目錄軟件工程學習筆記《目錄》需求工程師當代的需求工程師需要具備的能力當代的需求工程師需要努力的方向當代的需求工程師需要注意的錯誤需求的定義需求目標需求分析的實質需求分析的關鍵應該涵蓋的內容&#xff1f;需求規約&#xff08;作為較客觀的參照&#xff09;單個…