mbed CLI からエクスポートを行う方法

mbedオンラインコンパイラを使っていると、サービス自体が止まっていて使えなかったり、特定のターゲット（プラットフォーム）で使いたいIDEやオフライン環境にエクスポート出来ない場合があります。

mbed CLI （mbedコマンドラインツールチェイン）のエクスポート機能を使って、オンラインIDEのプロジェクトを各種オフラインツール用のプロジェクトに変換することができます。

以下に手順を示します。

# 準備

* mbed CLI をインストールします（詳細は以下を確認して下さい） https://developer.mbed.org/users/MACRUM/notebook/mbed-offline-development/

## オンラインIDEで作成したプロジェクトを mbed CLI からインポートする

mbed オンラインIDEから、各種IDEやツールチェイン向けにローカル環境にエクスポートすることが出来ますが、ここではオンラインIDEからではなく、mbed CLI を使います。

* プロジェクトをパブリッシュする

使用するプロジェクトは、パブリッシュされている必要があります。パブリッシュの方法は、こちらを参照して下さい。

https://developer.mbed.org/handbook/Publishing-code

第三者に公開したくないコードは、Visibilityを「Public (Unlisted) - コード一覧にリストしない」、または「Private（リポジトリのオーナと選択したアカウントにのみ公開）」に設定します。

![mbed-cli-publish.png](https://qiita-image-store.s3.amazonaws.com/0/75582/bc3edd32-4578-dfa5-d9da-bbe2bb14cb41.png)


* Code ページ右側の “Import with CLI” から、”Import with mbed CLI” を選んで文字列をクリップボードにコピーする 

![mbed-cli-import.png](https://qiita-image-store.s3.amazonaws.com/0/75582/c02d0c35-650a-9f05-21fa-f2a0d3c4adf9.png)

* 文字列をコマンドプロンプトや Terminal にペーストして実行する

プロジェクトがインポートされます。Private 属性でパブリッシュされたコードは、ここでユーザ名とパスワードを入力する必要があります。

インポートされたディレクトリに移動します。通常はここから、```mbed compile``` コマンドを使うとコマンドラインのコンパイラでプログラムをビルドすることが出来ます。

# 各種IDEのプロジェクトファイルやオフライン環境用のmakefileを生成する

プロジェクトファイルを生成するには export コマンドを使用します。

## Keil MDK-ARM uVison IDE用のプロジェクトを作成する場合
```
mbed export -m K64F -i uvision 
```
コマンドを実行した場所と同じようディレクトリに、{project}.uvprojx が生成されます。uVision IDEから、プロジェクトを開いて使用します。

## ARM Embedded GCCのmakefileを作成する場合
```
mbed export -m LPC1768 -i make_gcc_arm
```
コマンドを実行した場所と同じディレクトリに、Makefileが生成されます。makeユーティリティを使用してビルドします（makeユーティリティは、mbed-cliには付属しませんので別途用意して下さい）。GCC_ARM ツールチェインを使用した make は、本質的には mbed compile -t GCC_ARM と変わりませんが、Makefile でプロジェクトを管理したい場合に使用します。

## ARM DS-5 等の Eclipse IDE 用のプロジェクトを作成する場合
```
mbed export -m RZ_A1H -i eclipse_armc5
```
[ARM DS-5 からプロジェクトをインポートする]

* ARM DS-5 を起動する
* メニューから、[ファイル] - [インポート…] を選択
* [一般] - [既存プロジェクトをワークスペースへ]
* [ルートディレクトリの選択] でプロジェクトのディレクトリ選択する
* [終了] で、プロジェクトがインポートされる

DS-5 から mbed 2 (mbed classic) プロジェクトのインポートはファイルが多いため、 やや時間がかかります。使用しない TARGET ディレクトリは削除した方が早くインポート処理が終了します。

```mbed export -i``` オプションで指定できる IDE は以下です。ターゲットとの組み合わせによっては、export できない物もあります。

```
atmelstudio,     cmsis,           coide,           ds5_5, 
e2studio,        eclipse_armc5,   eclipse_gcc_arm, eclipse_iar, 
embitz,          gcc_arm,         gnuarmeclipse,   iar, 
kds,             lpcxpresso,      make_armc5,      make_gcc_arm, 
make_iar,        simplicityv3,    sw4stm32,        uvision, 
uvision5,        zip
```
# ターゲットでサポートされていないIDEにエクスポートする

各種IDEへのエクスポートは、ターゲットによって個別に設定されているため、組み合わせによっては対応していない物があります。mbed CLI 環境では、ローカル環境上のコードやビルドスクリプトを使用するので、手動で設定を変更・追加する事が可能です。

ここでは、MPS2ボード用にMDK-ARM uVision 5プロジェクトファイルを生成する方法を示します。

1. MDK-ARMのPack Installerから、[All Devices] - [ARM] を選択し、Keil::V2M-MPS2_CMx_BSP をインストール
* ```mbed import``` コマンドでパブリッシュされたリポジトリをインポート
* ```{project}\.temp\tools\latest_targets.json``` をエディタで開く  
mbed OS 5 の場合は、```{project}\mbed-os\targets\targets.json```
* ARM_MPS2_M3のブロック内に以下を追加  
```“device_name”: “CMSDK_CM3"```  
※この device_name は、Pack で定義されている名称です
* 次のコマンドを実行する  
```mbed export -i uvision -m ARM_MPS2_M3```

![mbed-cli-device_name.png](https://qiita-image-store.s3.amazonaws.com/0/75582/09e0ea3d-1a50-e0ce-d1cc-84e0efddefa3.png)


上記手順で、カレントディレクトリに {project}.uvprojx が生成されるのでダブルクリックして uVision IDE でプロジェクトを開いて使用します。