IAR Embedded Workbench 常用宏變量(Argument Variables)備忘錄
在 IAR 開發過程中,配置 Pre/Post-build command(預/後構建命令行)或 External Tools(外部工具)時,經常需要使用動態路徑。IAR 提供了一套類似環境變量的 Argument Variables,熟練使用它們可以讓工程配置更靈活,不受絕對路徑限制。
1. 核心路徑類 (Project & Workspace)
這是最常用的變量,用於定位工程和工作空間的位置。
|
變量名
|
説明
|
示例 (假設工程在 C:\Project)
|
|
|
項目目錄 ( |
|
|
|
項目名稱 (不帶擴展名) |
|
|
|
項目文件全路徑 |
|
|
|
工作空間目錄 ( |
|
|
|
工作空間名稱 (不帶擴展名) |
|
2. 構建配置與輸出類 (Configuration & Output)
用於區分 Debug/Release 版本以及定位編譯生成的二進制文件。
|
變量名
|
説明
|
示例
|
|
|
當前配置名稱 (Debug / Release) |
|
|
|
輸出目標目錄 (生成 .out/.hex 的文件夾) |
|
|
|
輸出文件名 (帶擴展名) |
|
|
|
輸出文件全路徑 |
|
|
|
中間對象目錄 (生成 .o 文件的文件夾) |
|
|
|
列表文件目錄 (生成 .map/.lst 的文件夾) |
|
3. 環境變量與工具類 (Environment & Tools)
用於引用 IAR 安裝目錄或編譯器路徑。
|
變量名
|
説明
|
示例
|
|
|
IAR 安裝根目錄 |
|
|
|
特定架構工具鏈目錄 |
|
|
|
當前系統日期
|
|
|
|
當前系統時間
|
|
4. 當前處理文件類 (Current File)
注意:這類變量通常只在“自定義構建規則”或對單個文件執行操作時有效。
|
變量名
|
説明
|
|
|
當前正在處理文件的目錄
|
|
|
當前文件名 (不帶擴展名)
|
|
|
當前文件的絕對路徑
|
💡 實戰使用技巧
1. 永遠記得加引號!
Windows 路徑中經常包含空格(例如 Program Files 或 My Documents)。如果不加引號,命令行會把空格視為參數分隔符,導致報錯。
- ❌ 錯誤:
$PROJ_DIR$\output.bin - ✅ 正確:
"$PROJ_DIR$\output.bin"
2. 經典應用:Post-build 自動複製文件
在 Options -> Build Actions -> Post-build command line 中:
將生成的固件重命名並複製到項目根目錄下的 Firmware 文件夾:
cmd /c copy "$TARGET_BPATH$" "$PROJ_DIR$\Firmware\App_$CONFIG_NAME$.hex"
效果: 編譯 Release 版時,自動生成 App_Release.hex。
3. 經典應用:將配置傳遞給 C 代碼
想在代碼裏知道當前是 Debug 還是 Release?
在 Options -> C/C++ Compiler -> Preprocessor -> Defined symbols 中添加:
BUILD_CONFIG="$CONFIG_NAME$"
在 C 代碼中:
#include <stdio.h>
#define XSTR(x) STR(x)
#define STR(x) #x
void main() {
printf("Build Config: %s\n", XSTR(BUILD_CONFIG));
}
4. 經典應用:調用 Python 腳本處理 Bin 文件
python "$PROJ_DIR$\script\checksum.py" "$TARGET_BPATH$"