こんにちは でめきんです。
今回は、昨年中頃からyoloを使って研究をしています。
yoloもpythonで書かれたものもあれば、C++で書かれたコード等何種類かあります。
当初、pythonで書かれたものを使用していたのですが、訳合ってC++のdarknetを使用することになりました。
その際にCMAKEを使って「メイク」するとか、visualstudioを使って「ビルド」といった訳の分からないものを理解するのに苦労したので、そこを備忘録として書いていきます。
** 独学ですので間違っていたらコメント等でご指摘いただければ幸いです。 **
Contents
コンパイルとは?
まずは、コンパイルというものを覚えておかなければいけません。
pythonでは無いのですが、C/C++,FORTRAN,COBOLといった言語だとプログラムコードを実行する前にコンパイルという作業が必要となります。
コンパイルとは、プログラムコードを機械の言語に変換する事を指します。
コードを修正した時にも、実行する前には必ずコンパイルしなければなりません。
コンパイルする際には、複数のオプションを指定することが可能で、コンパイルコードが長くなることもあります。
昔、C++を勉強したときコードを修正するたびにコンパイルという作業が本当に面倒でしかも時間がかかっていたので、挫折してしまいました。
makeとは
先ほども書きましたが、コードを修正した際にはコンパイルという作業が必要になります。コンパイルには様々なオプションを付ける事が可能です。
それらを毎回打ち込んでいくと、面倒です。その上、間違いが起こる可能性があります。
その為に、makeコマンドがあります。makeコマンドを実行すると、Makefileに書き込まれたコードが実行されます。
Makefileには、コンパイルのコードを書き込んでおきます。
そうすることで、コード修正のたびにコンパイルのコードを打たずに、makeのコマンドだけで実行することができるようになります。
buildとは
よくあるプログラムは、一つのexeファイルで実行されます。
プログラムは一つのファイルだけで作られていることは稀です。複数のプログラムファイルが関係しあって、そのほかのプログラムも関係していることは少なくありません。
私が研究しているyoloもC++でコードが書かれていて、その他にopenCVとGPUのCUDAも関わっています。
それらを一緒にして一つのexeファイルを作成することを「build」と言います。
buildとは「建てる」という意味そのものですね。
最後に
いかがですか?「make」「build」の概要を理解していただけましたでしょうか?
私自身もまだまだ理解不足ではありますが、間違っていたらご指摘いただければ幸いです。
よろしくお願いいたします。
今後は、yoloのセットアップを記事にしていきたいと思います。