ロボット工作で(?)いずれ何かに応用できるのを期待してこのごろ演習をした内容(2)。
gccをPCに入れてみました。今やVisualStudioで、まとめてなんでもやってくれて便利なのでいらないといえばいらないのかもしれないですが。基礎をやっておくのはいいことだと思いましたので。
参考は、こちら
(Cプログラミングを用いた数値計算のページ)
http://sa.eei.eng.osaka-u.ac.jp/tatsumi/tani_prog/HOWTOprogC/split.htm
阪大の研究室のページなのかな。この中の記事の分割コンパイルのところを読んで練習しました。末尾の#ifdef,#defin,externの使い方の解説はとてもわかり易かったので、理解の整理に役立ちました。
( ´・ω・`)ですが~、WindowsにMinGWを直接入れてMakefileの練習をすると、celan:以下でrmをかけると、
rm を、
clean :
cmd /C del main2.o func2.o
の様に、書いた上で、例題の
CC = gcc
sample3.exe : main2.o func2.o
$(CC) -o $@ main2.o func2.o
main2.o : main2.c prot.h def.h
$(CC) -c $*.c
func2.o : func2.c prot.h def.h
$(CC) -c $*.c
clean :
cmd /C del main2.o func2.o
を、先頭から実行すると、cleanの手前で止まっちゃいました。単体でclean部分を指定すれば動きますから、まるっきり駄目というわけではないのですが、どうもあと一歩というところですっきりしません。
(※訂正)後日、LinuxBeanを別PCに入れて、上の止まっちゃう件に関しLinux環境下でもやっぱり同じ結果になったので、どうも根本的な勘違いをしてるのではないかと、もう一回参考サイトの記事を読み直しましてやっと意図する意味が理解できました。
(以下引用)
…なお、最後に置かれたターゲット:cleanをオペランドとしてmakeを起動すると、対応するコマンド行が実行され、makeによって生成されたファイルが消去されてディレクトリが最初の状態にもどります。このような特別な機能を持つターゲットのことを擬似ターゲットと呼びます。
clean以下は、make :cleanしない限りは、実行されないという意味だったのかと今頃理解できました。(。>﹏<。)
コメント