組み込み C コードベースの自動ビルドおよび継続的統合環境に取り組んでいます。Keil の Real View Compiler (Windows 実行可能ファイル) をクロス コンパイラとして使用し、Cygwin を使用して継続的インテグレーション環境全体を構築しています。
Keil のドキュメントによると、Cygwin を使用している場合、インクルード ファイルなどの Cygwin パスを理解するには、コンパイラ (つまり、Windows 実行可能ファイル) に対して CYGPATH 環境変数を適切に設定する必要があります。( http://www.keil.com/support/man/docs/ARMINTRO/armintro_pge1362395716635.htm )
メイクファイルは次のようになります。
INCLUDE_DIR=-I$(PATH_TO_KEIL)/MDK-Middleware \
-I$(PATH_TO_KEIL)/ARM
a.o : a.c
echo
echo Compiling $<....;
echo cc -c $(INCLUDE_DIR) -o a.o a.c ;
cc -c $(INCLUDE_DIR) -o a.o a.c ;
$cc -c -I/cygdrive/c/Keil_v5/MDK-Middleware -I/cygdrive/c/Keil_v5/ARM -o a.o a.c
Cygwin ターミナルで直接実行
すると、クロス コンパイルが正常に行われます。
ただし、PATH_TO_KEIL を /cygdrive/c/Keil_v5 として定義しているにもかかわらず、makefile コンパイラーを実行すると、インクルード ファイルが見つからないというエラーが表示されます (つまり、/cygdrive/c/Keil_v5/ARM または C:\Keil_v5 に存在するファイル)。
また、それが役立つ場合は、インクルード ファイルの相対パスを指定すれば、クロス コンパイルの実行に問題はありません。