Makefile中eval函數的用法

Makefile中eval函數的用法

  • 一,eval函數的使用方法:
  • 二,eval函數的優勢

一,eval函數的使用方法:

在Makefile中,eval 函數的作用是用來動態地執行Makefile中的命令或賦值操作。它的基本語法如下:

$(eval variable := value)

其中,variable := value 是一個賦值語句或命令,可以是任何有效的Makefile語句。eval 函數會將 variable := value 當做Makefile語句執行,從而實現動態生成或修改變量的效果。

例如,假設我們有一個變量 TARGET 需要根據條件來動態設置:

ifeq ($(DEBUG), 1)$(eval TARGET := debug)
else$(eval TARGET := release)
endif

在這個例子中,根據 DEBUG 變量的值,eval 函數動態地將 TARGET 變量設置為 debugrelease。這種方式使得在Makefile中可以根據條件來靈活地生成和管理變量值,從而適應不同的構建需求或環境設置。

總之,eval 函數在Makefile中的主要作用是允許通過運行時生成的方式來修改或生成變量和命令,增強了Makefile的靈活性和可擴展性。

二,eval函數的優勢

在下述的示例中,直接使用條件語句來賦值變量是完全合法和常見的做法,不一定需要使用 eval 函數。在Makefile中,條件語句可以根據指定的條件來選擇不同的賦值操作,例如:

ifeq ($(DEBUG), 1)TARGET := debug
elseTARGET := release
endif

這段代碼的作用是:如果 DEBUG 變量的值為 1,則將 TARGET 賦值為 debug;否則將 TARGET 賦值為 release。這種做法是直接、清晰且有效的。

相比之下,使用 eval 函數的優勢在于可以動態地生成和執行賦值語句,這在需要根據更復雜的條件或執行動態生成的情況下特別有用。但在你的示例中,簡單的條件賦值是更為直接和可讀性更好的做法,并且在大多數情況下足夠滿足需求。

因此,對于你的示例代碼,直接使用條件語句來賦值 TARGET 是完全合適和可行的,不需要額外引入 eval 函數。

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

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

相關文章

Spring MVC數據綁定和響應——簡單數據綁定(三)POJO綁定

一、POJO數據綁定的使用場景 在使用簡單數據類型綁定時,可以很容易的根據具體需求來定義方法中的形參類型和個數,然而在實際應用中,客戶端請求可能會傳遞多個不同類型的參數數據,如果還使用簡單數據類型進行綁定,那么就…

adb shell執行定時2小時命令

在Android設備上使用adb shell來執行一個定時2小時后運行的命令并不直接支持,因為adb shell是即時執行shell命令的工具,不支持內置的定時任務功能。但是,你可以通過幾種方法來實現類似的功能: 方法一:使用sleep命令 …

dbeaver數據庫鏈接工具

1、下載dbeaver 一個綠色版一個安裝版,官網開源版 2、安裝 3、可以導入之前navicat的鏈接 導入 選擇navicat 反編譯密碼的:https://tool.lu/coderunner navicat 版本15的密碼解密:https://www.iatodo.com/navicatpw

css動畫自定義動畫間隔時間

function playAnimation(element) {var animationName rubberBand;var duration 2000; // 動畫持續時間,單位為毫秒element.style.animation ${animationName} 1s ease;element.addEventListener(animationend, function() {// 動畫結束后重置樣式,以…

服務運營 | MS文章精選:線上點單,當真免排隊?餐飲零售與醫療場景中的全渠道運營

編者按: 小A走進了一家奶茶店,準備向店員點單,但卻在屏幕上看到還有98杯奶茶待制作(因為線上訂單突然暴增)。因此,小A不滿地嘟囔著離開了奶茶店。這個例子展示了線上渠道可能會對線下渠道造成一些負面影響…

使用AES,前端加密,后端解密,spring工具類了

學習python的時候,看到很多會對參數進行加密,于是好奇心驅使下,讓我去了解了下AES加密如何在java中實現。 首先 npm install crypto-js 然后在你的方法中,給你們前端源碼看看,因為我用的ruoyi框架做的實驗&#xff…

四川音盛佳云電子商務有限公司抖音電商的先行者

在當今數字時代,電商行業風起云涌,各大平臺競相爭奪市場份額。而在這其中,四川音盛佳云電子商務有限公司以其獨特的抖音電商服務模式,悄然崛起,成為了行業中的一股不可忽視的力量。今天,就讓我們一起走進音…

【GD32F303紅楓派使用手冊】第二十六節 EXMC-液晶驅動實驗

26.1 實驗內容 通過本實驗主要學習以下內容: LCD顯示原理 EXMC NOR/SRAM模式時序和8080并口時序 LCD顯示控制 26.2 實驗原理 使用MCU的EXMC外設實現8080并口時序,和TFT-LCD控制器進行通信,控制LCD顯示圖片、字符、色塊等。 26.2.1 TFT…

圖像超分辨率重建

一、什么是圖像超分辨 圖像超分辨是一種技術,旨在通過硬件或軟件的方法提高原有圖像的分辨率。這一過程涉及從一系列低分辨率的圖像中獲取一幅高分辨率的圖像,實現了時間分辨率向空間分辨率的轉換。超分辨率重建的核心思想是利用多幀圖像序列的時間帶寬來…

計算機畢業設計Thinkphp/Laravel學生考勤管理系統zyoqy

管理員登錄學生考勤管理系統后,可以對首頁、個人中心、公告信息管理、年級管理、專業管理、班級管理、學生管理、教師管理、課程信息管理、學生選課管理、課程簽到管理、請假申請管理、銷假申請管理等功能進行相應操作,如圖5-2所示。學生登錄進入學生考勤…

金蝶云蒼穹考試題目大全

前言 受不了某些地方看個答案還要收費,總結多份試卷 題目有重復,關鍵字檢索即可 試卷一 金蝶云蒼穹考試題目大全 單選題 開發知識錯題反饋1.0分 1.關于編碼規則的適用范圍說法錯誤的是 A.單據沒有設置主業務組織的情況下,則校驗用戶當前登…

【Spine學習16】之 人物面部綁定

1、創建頭部骨骼 一根頭骨 以頭骨為父結點創建一個面部控制器face-holder 2、創建頭發和face面部控制結點的變換約束 左右頭發的約束指向為face結點 3、設定后發的變換約束,約束指向為face結點,反方向移動 設置參數為-100 同理,耳朵也依…

C# 中的 App.manifest 文件:優化應用程序配置與權限管理

前言 在開發 C# 應用程序時,可能會忽略一個重要的文件——App.manifest。這個文件看似不起眼,卻在應用程序的運行和用戶體驗上扮演著關鍵角色。了解和正確配置 App.manifest 文件,不僅可以確保應用程序在不同操作系統上的兼容性,…

解決uniapp,textarea拉起頁面被頂起和鍵盤被輸入框遮擋的問題。

1:Android、ios 同時解決; 2:我們在開發的時候會發現textarea或者input拉起鍵盤的時候整個頁面被頂起了,header也被頂沒了;官方給了:adjustPositionfalse屬性,設置完之后頁面就不會被頂起,但是…

談談SQL優化

SQL優化是數據庫性能優化中的關鍵環節,旨在提高查詢執行的效率和響應速度。下面是一些常見的SQL優化技巧和策略,涵蓋索引、查詢設計、表結構設計等方面: 1. 索引優化 創建索引:為常用查詢的過濾條件(WHERE 子句&…

了解json

一.什么是json 1.什么是json是一種輕量級的數據交互,可以按照指定的json格式去組織和封裝數據 2.json本質上是一個帶有特定格式的字符串 二.json主要功能:json就是一種在各個編程語言中流通的數據格式,負責不同語言中的數據傳遞和交互&…

【Python時序預測系列】基于CNN+Bi-LSTM實現單變量時間序列預測(案例+源碼)

這是我的第309篇原創文章。 一、引言 基于CNN(卷積神經網絡)和Bi-LSTM(雙向長短期記憶網絡)的單變量時間序列預測是一種結合空間特征提取和時間依賴建模的方法。以下是一個基于Python和TensorFlow/Keras實現的示例,展…

C++ 高頻面試題

C 初級面試題及其詳細解答 1. 解釋 C 中的基本數據類型。 解答: C 提供了幾種基本數據類型,包括: int:整型,用于存儲整數。float 和 double:浮點型,用于存儲小數。char:字符型&am…

Android 強制使用移動網絡訪問接口

Android 強制使用移動網絡訪問接口_安卓連接wifi強制使用移動數據-CSDN博客 Android應用層實現恢復出廠設置功能_android7 intent 打開恢復出廠設置-CSDN博客

YOLOv8改進 | 主干網絡| 可變形卷積網絡C2f_DCN【CVPR2017】

💡💡💡本專欄所有程序均經過測試,可成功執行💡💡💡 專欄目錄:《YOLOv8改進有效漲點》專欄介紹 & 專欄目錄 | 目前已有40篇內容,內含各種Head檢測頭、損失函數Loss、B…