Keil uVision4(MDK-ARM)でビルドサーバーを使用し、ビルドをスクリプト化し、メイクファイルを使用するにはどうすればよいですか?


13

Keil MDK-ARMベースのプロジェクトのビルドを毎日実行するか、チェックイン/コミットトリガービルドを実行したいと思います。これまでのところ、IDEのバッチファイル機能を使用して問題を解決しています。これは、バッチファイルにチェックインし、関連した、その後、少なくともIDEで一度プロジェクトをビルドする必要がない.__iし、._iaIDEで作成されたファイル。

さらに、IDEはWindowsのPATH変数など、ユーザー固有の多くのことをバッチファイルに入れます。ビルド用のバッチファイルは、異なる開発者からのコミットごとに変更される可能性があるため、これは複数の開発者にとって問題になる可能性があります。

最終的に、armccarmasm、およびArmLinkのさまざまなスイッチを追跡する必要があります

より標準的なメイクファイルを使用してKeil uVisionプロジェクトをビルドする方法はありますか?uVisionプロジェクトファイルをよりメンテナンスしやすいビルドスクリプトに変換する方法はありますか?


ビルドサーバーを実装しているのは素晴らしいことだと思います。残念ながら、私はKeil開発システムの経験がないため、実際に支援することはできません。解決したら、解決策を投稿することをお勧めします。
semaj

PATH依存関係(Keilツール自体以外)または__i / _iaファイルなしでバッチスクリプトを介してKeilプロジェクトをビルドします。これについてもっと情報を共有できますか?
-Digikata

1
@digikata IDE内からオプションを使用してバッチファイルを生成しています。これはKeilのドキュメントに記載されています。ここで 説明したコマンドライン駆動の方法もありますが、そのコマンドから適切なコンソール出力を取得するのは困難でした。2番目の方法は新しいプロセスを開始し、出力ウィンドウを出力ファイルにコピーするオプションを提供します-ビルドサーバーには適していません。
rmaVT

将来の参考のために、この質問の範囲は、他のStack Exchangeサイトと共有する重複領域です。Keilなどの組み込み固有のツールチェーンに関する質問は、ここで間違いなく歓迎します!Stack Overflowも歓迎しますが、どちらの場所でもお気軽にお問い合わせください。
ケビンフェルメール

1
@KevinVermeer-はい、私は自分自身で同じことを言おうとしていました。rmaVTでは、EE SEで「keil」とタグ付けされた質問と同様に、SOで「keil」とタグ付けされた質問を参照できます。
デビッドリー

回答:


8

これは私が最近思いついた最高の方法です:

ビルドオプションで、[バッチファイルの作成]を選択します。

IDEからビルドを開始すると、IDEで設定されたオプションに基づいて、いくつかのテキストファイルとともにバッチファイルが作成されます。ソース管理でこれらのIDE生成ファイルを追跡する必要があります。

  • *。バット
  • * .ini
  • *。__私
  • * ._ ia
  • * .lnp
  • * .sct

その後、foo.batをビルドスクリプトから起動できます。

これにより、生成されたバッチファイルから確実にビルドする場合、ソース管理で追跡する必要がある追加のファイルが作成されますが、Keilプロジェクトファイル(foo.uvproj)およびIDEに依存する必要がなくなります。.uvprojファイルよりも、コンパイラフラグを含む生成されたテキストファイル(* .__ i)の違いを比較し、変更を追跡する方が簡単だと思います。さらに、バッチファイルはさまざまなツール、armasm、armcc、armlinkを直接呼び出します。これにより、これらの各ステップの直接的な出力が得られるだけでなく、必要に応じて将来プロジェクトを別のツールチェーンに移行する可能性が高くなります。

この答えは私の最初の質問のように聞こえますが、Keilのツールを使用してスクリプトビルドを実行するより良い方法を本当に知りません。私は他の人から何が出てくるかを尋ねました。@digikataの答えに完全に反対するわけではありませんが、コンパイラフラグとメモリマップを追跡用の簡単な形式にし、オールインワンコンパイルを起動するのではなく、より多くのUnixスタイルのツールを使用することを好みますIDEで。IDEからのオールインワンコンパイルは、ワークステーションではうまく機能すると思いますが、ビルドサーバーではうまくいきません。

編集:ビルドサーバーはWindows Server 2003で実行されます。バッチファイルではなく、IDEコマンドラインインターフェイスを使用することに執着したことを認める必要があります。これは管理するのが難しくなりすぎました。


この作業に関する質問-ビルドサーバーはどのオペレーティングシステムを実行していますか?Linux、Windows 7、Windows Server 2003、Windows Server 2008?
CrimsonX

質問に答えてくれてありがとう!Keilのドキュメントによると、armツールチェーンはWindows Server 2003および2008 R2で動作するようです。編集に関する追加の質問:uvprojファイルへの変更をどのように処理しますか(たとえば、新しいファイルをプロジェクトに追加してコンパイルする)。ビルドサーバーに昇格したファイルのコンパイルオプションを手動で変更する必要がありますか?
CrimsonX

.uvprojファイルをソース管理下に置く必要があります。これはかなりうまく機能しますが、.userxxxxxファイルも生成されますが、いくつかのユーザー設定がファイルに残っています。ビルドサーバーは、同じ「プロジェクト」を開いてビルドするだけです。
rmaVT

3

Makefile内から(生成されたバッチファイルではなく)ビルドするために、コマンドライン経由でKeil IDEを呼び出します。通常、scmを介してプロジェクトファイルをロックダウンするか、これを行う際に関連するプロジェクト名を変更してリファレンスビルドコピーを作成する方が適切です。

IDEは読み取り専用のプロジェクトファイルで作業できるので非常に満足しているので、ロックダウンした場合、設定を変更し、保存し、チェックインするためにロックを解除する必要があります。プロジェクトのポイントこれはかなりマイナーです-さえ望ましい。

参照コピーを取得すると、プロジェクト設定が変更されると、特にプロジェクトファイルがコンパイルに追加またはドロップされると、ビルドが破損する傾向があります。これらの変更を明示的にキャプチャすることは必ずしも悪いことではありませんが、ビルドを維持するために必要な追加の手順です。

いずれにしても、「-o」オプションを使用して出力をログファイルにリダイレクトすると、完全な出力ログにアクセスできます。ログは一度に1行ずつ表示されることはありませんが、すべてそこにあるようです。(実際には、Eclipse CDT環境との統合のためにKeilエラー形式をGNU fmtに解析します。これにより、ビルド後にエラー/警告に直接ジャンプできます)

コマンドラインビルドは__i、__ iaファイルも生成するため、これらのファイルもビルドサーバーのバージョン管理に入る必要はありません。

お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.