何が足りない?
- インクルードパスの指定
- マクロ定義 (#ifdef などに使うマクロをコンパイラのオプションで定義している場合)
- _WIN32 を定義させない
- __ramfunc のような組込み系特有のキーワードのごまかし
方法
{
"configurations": [
{
"includePath": [
"${workspaceFolder}",
"${workspaceFolder}/Inc",
"${workspaceFolder}/Drivers/STM32F7xx_HAL_Driver/Inc",
"${workspaceFolder}/Drivers/STM32F7xx_HAL_Driver/Inc/Legacy",
"${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F7xx/Include",
"${workspaceFolder}/Drivers/CMSIS/Include"
],
"defines": [
"USE_HAL_DRIVER",
"STM32F767xx",
"__ramfunc="
],
"compilerPath": "C:/Ac6/SystemWorkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.17.0.201812190825/tools/compiler/bin/arm-none-eabi-gcc.exe",
"intelliSenseMode": "gcc-arm",
"cStandard": "c99",
"cppStandard": "c++11"
}
],
"version": 4
}
解説
(1) インクルードパスの指定
- configuration の includePath に列挙する。
- ワークスペースのパスは ${workspaceFolder} と書く。
(2) マクロ定義
- configuration の defines に列挙する。
(3) _WIN32 を定義させない
- configuration の compilerPath に gcc のパスを指定する。
- configuration の intelliSenseMode に "gcc-arm" を指定する。
- ベンダ固有のコンパイラを指定しても認識してくれない。(まあそうでしょ。)
(4) 組込み系特有のキーワードのごまかし
- __ramfunc のようなキーワードは前述のマクロ定義で空文字列に置換させる。