99、【OS】【Nuttx】【構建】cmake 配置實操:問題解決

【聲明】本博客所有內容均為個人業余時間創作,所述技術案例均來自公開開源項目(如Github,Apache基金會),不涉及任何企業機密或未公開技術,如有侵權請聯系刪除

背景

接之前 blog
【OS】【Nuttx】【構建】cmake 配置問題定位:gmake 調用
【OS】【Nuttx】【構建】cmake 配置問題定位:CMakeFiles/menuconfig.dir
【OS】【Nuttx】【構建】cmake 配置問題定位:menuconfig.dir/build.make
之前 blog 已經分析了 gmake 和 gmake[1],gmake[2] 的調用關系,以及 CMakeFiles,menuconfig.dir,定位了問題大部分元素,最后指向了 build.make 中具體執行命令的 70 行(找不到對應文件和目錄),下面來分析解決方案

build.make

下面來看出問題的地方
在這里插入圖片描述

構建 CMakeFiles/menuconfig 目標時,第 70 行出錯了,沒找到相關的文件或目錄
在這里插入圖片描述
出問題的這句話很長,而且這個 menuconfig 目標執行的是命令,直接拷貝出來在 bash 終端執行,方便查看
在這里插入圖片描述
這里看起來很長,化繁為簡其實很清晰,這是

cmake -E env [--env=NAME=VALUE] [command]

命令行模式的用法,表示設置環境變量并運行 command 命令,很明顯,這里的命令是 menuconfig,而在 bash 終端輸入 which menuconfig 來查找這個命令的位置,可以看到是沒有這個命令的,所以執行出錯
在這里插入圖片描述
首先要明確目的,這里是要用 cmake 進行工程配置,要實現與 make menuconfig 一樣的效果,這里就涉及到 menuconfig 這個概念,在 make 構建和 cmake 構建中,它都是一個目標,查看 make 里對它的目標描述:
在這里插入圖片描述
可以看到其實和 cmake 上面那個命令很像,都是設置環境變量 KCONFIG_ENV,然后執行命令 KCONFIG_MENUCONFIG,那么 make menuconfig 執行的命令 KCONFIG_MENUCONFIG,可以發現和 cmake 執行的并不相同,cmake 執行的是 menuconfig,而 make 執行的是 kconfig-mconf Kconfig
在這里插入圖片描述
這里就涉及到兩個概念:menuconfig 和 kconfig-mconf Kconfig

  • menuconfig:表示這是一個基于文本的用戶界面,用來瀏覽和編輯由 Kconfig 文件定義的配置選項
  • kconfig-mconf:是實現 menuconfig 的實際工具,mconf 是 kconfig 系統的一部分,負責解析 Kconfig 文件并生成相應的配置界面,換句話講,當運行 make menuconfig 命令時,實際上是在調用 kconfig-mconf 工具來讀取 Kconfig 文件并顯示配置界面

這里問題就很清晰了,cmake 執行了 menuconfig 這樣一個抽象的,不存在的概念,而 make 執行的是 kconfig-mconf Kconfig 這樣一個清晰的命令,所以 cmake 當然執行命令出錯,之前 blog 【OS】【Nuttx】【構建】cmake menuconfig 目標 講過, cmake 執行配置命令在 42 行這里
在這里插入圖片描述
而 ${MENUCONFIG} 的值在 37 行這里

在這里插入圖片描述
所以將 cmake 這里的 MENUCONFIG 替換成 kconfig-mconf Kconfig
在這里插入圖片描述
再重新在 bash 終端執行命令

cmake --build build -t menuconfig

此時 cmake 可以正常打開配置界面,和 make menuconfig 一樣,并且這里打開的是 build 目錄下的 .config
在這里插入圖片描述
這和用 make 在 nuttx 項目根路徑上進行 menuconfig 還是有區別的,make 上顯示的 .config 是相對路徑(相對于 nuttx),而 cmake 上顯示的是絕對路徑,不過不影響用 cmake 進行配置就行
在這里插入圖片描述
ok,cmake 配置工程結束,下篇 blog 回到主線繼續分析

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

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

相關文章

2007-2023年各省環境保護支出統計數據

數據介紹 環境保護支出是指政府和企業為改善生態環境質量、防治污染、保護自然資源所投入的資金,涵蓋污染防治、生態修復、環境管理等多方面。污染防治支出、生態保護支出、環境管理事務、資源節約與循環利用等,當前環保支出仍面臨區域不平衡、隱性債務…

PyCharm(2025.1.3.1)綁定 Conda 環境

1. Pycharm 右下角,選擇( 如圖所示 )2. Path to conda 這里選擇如圖所示的這個文件( 在你下載的 Anaconda 文件里 ),之后在 Enviroment 中就可以看到你新創建的環境了

Liunx文件系統詳解

目錄 1.磁盤 1.1 概念 1.2 磁盤物理結構 1.3 磁盤的存儲結構 1.4 磁盤的邏輯結構 1.5 CHS && LBA地址 2.基礎文件系統 2.1 塊 ?編輯 2.2 分區 2.3 inode 3.ext2 ?件系統 3.1 宏觀認識 3.2 Block Group 3.3塊組內部構成 3.3.1 超級塊(Supe…

Mac如何安裝telnet命令

Mac如何安裝telnet命令_mac telnet-CSDN博客

【SpringBoot】持久層 sql 注入問題

目錄 概述 #{} 與 ${} 概述 前端惡意傳參,改變后端 sql 語句的語法結構,從而使后端給前端返回一些私密的數據。這種安全問題往往是因為沒有嚴格過濾參數,或者后端代碼不嚴謹導致的。 #{} 與 ${} 在 MyBatis 框架中,#{} 與 ${} 都…

怎么寫好漢語言文學專業的論文?

磨刀不誤砍柴功, 前期多看文章和文獻,吸取寫作經驗,寫作過程會更加順利噢!看到最后,相信你能得到收獲! 寫漢語言專業論文并不難,從選題、資料準備、框架搭建、正文寫作、修改定稿五個核心環節展…

MySQL User表入門教程

一、User表概述 MySQL的user表位于mysql系統數據庫中,是MySQL權限系統的核心,用于存儲用戶賬戶信息、認證方式和全局權限。通過操作此表,可實現用戶創建、權限分配及安全審計。 二、User表核心字段解析字段名作用示例值Host用戶允許連接的主機…

[NPUCTF2020]這是什么覓

題目是一個文件,我們先以記事本打開一下,開頭就是PK,基本可以確定這是一個 ZIP 格式的壓縮包?,不確定可以用winhex打開:?50 4B 03 04開頭則 100% 是 ZIP 文件。改一下后綴之后解壓得到一張圖片上面是日期&#xff0c…

每日任務day0812:小小勇者成長記之擠牛奶

清晨,薄霧還繚繞在草地上,小小勇者背著編織籃子來到農場。奶牛們低頭咀嚼,尾巴輕輕拍打著蒼白的露珠。老人微笑著遞給他一只溫熱的牛奶罐,說:“第一次要慢,別驚擾它們。”勇者學著老人彎下身,溫…

IIS 多用戶環境中判斷服務器是否為開發用電腦,數據狀態比較

如果只需要在 IIS 多用戶環境中判斷服務器是否為開發用電腦(一個固定狀態,通常不會動態切換),代碼可以進一步簡化。這種場景下,狀態一般是啟動時確定的(如通過配置文件或環境變量),后…

P2865 [USACO06NOV] Roadblocks G

思路:嚴格次短路,在任何情況下如果發現一條從1到i的路,都有以下情況:1.該路徑小于當前1到i的最短路,將最短路替換2.該路徑長度等于當前最短路,舍去3.該路徑大于最短路且小于次短路,將此路徑替換…

基于Hadoop的汽車價格預測分析及評論情感分析可視化系統

文章目錄有需要本項目的代碼或文檔以及全部資源,或者部署調試可以私信博主一、項目背景二、項目目標三、系統架構四、功能模塊五、創新點六、應用價值與前景每文一語有需要本項目的代碼或文檔以及全部資源,或者部署調試可以私信博主 一、項目背景 近年…

gpt-5與gpt-5-fast

簡單來說: GPT-5 → 追求最高質量的推理,輸出會更細致、更準確,尤其適合需要深度思考、長鏈推理、嚴謹分析的任務(比如復雜代碼調試、長文檔推理、系統設計)。速度相對慢一些。GPT-5-fast → 追求更高的響應速度&#…

Mybatis源碼解讀-SqlSession 會話源碼和Executor SQL操作執行器源碼

相關流程圖整理元數據簡略圖執行流程圖一級緩存、二級緩存設計與查詢流程分析圖一級緩存設計-類圖一級緩存工作流程圖二級緩存設計-類圖二級緩存工作流程圖元數據簡略圖 執行流程圖 一級緩存、二級緩存設計與查詢流程分析圖 一級緩存設計-類圖 一級緩存工作流程圖 二級緩存設計…

使用Excel制作甘特圖

最終效果:專業的項目管理團隊通常會使用project制作甘特圖,但是很多人沒接觸過這個軟件,另外project制作的甘特圖并不適合放在PPT中展示。由于Excel圖表的數據標簽無法準確識別月初和月末,如果使用原始數據直接做的效果是這樣的&a…

超詳細基于stm32hal庫的esp8266WiFi模塊驅動程序(可直接移植)

目錄 前言: 1 前期準備 1.1 了解mqtt通信協議 1.1.1核心組件 1.2 ESP8266固件燒錄 1.3 啟動EMQX服務器 1.3.1大概了解emqx的使用 2 驅動代碼講解應用 2.1 硬件接線 2.2 AT指令 2.3 驅動代碼 2.4 效果展示 前言: esp8266支持mqtt通信協議&…

redis認識緩存擊穿

緩存擊穿是指 一個非常熱點的數據(被高并發訪問)在緩存中過期失效的瞬間,導致大量并發請求同時穿透緩存,直接落到底層數據庫,造成數據庫瞬間壓力劇增甚至崩潰的現象。關鍵特征和你的描述解析“數據庫沒有就需要命中的數…

TF-IDF——紅樓夢案例

目錄 用 TF-IDF 挖掘《紅樓夢》各回目核心關鍵詞:一個 NLP 實踐案例 一、案例背景與目標 二、實現步驟 步驟 1:數據準備與分卷處理 1. 導入模塊與創建目錄 2. 打開源文件并初始化變量 3. 逐行處理文本內容 4. 寫入卷內容并過濾前兩行 5. 關閉最后…

【軟考中級網絡工程師】知識點之 IP QoS 技術

目錄一、IP QoS 技術是什么1.1 定義與概念1.2 重要性和應用場景二、IP QoS 技術原理2.1 流量分類與標記2.2 流量整形與限速2.3 擁塞避免與管理2.4 資源預留協議(RSVP)三、IP QoS技術模型3.1 盡力而為服務模型3.2 綜合服務模型(IntServ&#x…

Git 常用命令速查表

一、倉庫初始化與克隆命令說明git init在當前目錄初始化本地倉庫git clone <遠程倉庫地址>克隆遠程倉庫到本地&#xff08;例&#xff1a;git clone https://github.com/user/repo.git&#xff09;二、文件狀態與提交命令說明git status查看工作區 / 暫存區文件狀態git a…