プロが教える店舗&オフィスのセキュリティ対策術

opencvをvisual studioで使う際、cmakeでビルドするのは何故ですか?

A 回答 (2件)

以前Cmakeについて質問されていましたがCmakeの意味は理解できていますか?


#私はあまり理解されていないなという印象を受けます。

ビルドを行う際Cmakeを通じて行う主たる理由は環境の差異を吸収する事です。

Windowsの場合、Windowsがライブラリ全部入りで、かつ、Microsoftが互換性を重要視しすぎるほど重要視する会社なのもあってCmakeの意味をあまり実感できないですね。
一度ビルドが通ったソースコードは多分20年後30年後も何もしなくてもビルドできるでしょうし、それ以前にビルドしなおす必要さえなくただ起動するだけで問題なく動く動く場合が多いですね。

けれどそれ以外のOSはそうはいきません。
macOSであれば新たなライブラリが実装されると、古いライブラリは2~3年で廃止されますので、古いバージョンでは古いライブラリを使って、新しいバージョンでは新しいライブラリを使ってといったことを意識しないといけないバージョンが併存します。
それどころか10年ごとくらいのペースでCPUのアーキテクチャさえ変わってしまいます。

LinuxやBSDであればmacOSほどライブラリの廃止は激しくないですが、全部入りではなく必要なライブラリだけがインストールされている事に加え、
ライブラリがWindowsとは違いユーザの都合がいい場所にインストールできるので、想定外の場所にインストールされているという可能性もあります。
実際に動かす環境のライブラリのパスを保持した状態でビルドしなければなりませんし、必要なライブラリが無ければインストールしてとメッセージを出すか或は機能限定版でビルドするかなどと言う事も考える必要があります。

macOSやLinux、BSDのような環境であれば当然状況に応じてコンパイラに渡すパラメータは変えないといけないですし、状況次第ではソースコードにパッチを当てる必要が出てくる場合もあります。
そんな作業を何百カ所も手作業で行う事は現実的ではないので、それを自動化してくれるCmakeが必要となってきます。

OpenCVの場合は、Windows以外にもLinux、FreeBSD、macOS、Android、iOSにも対応している為、上に書いたような事を意識する必要があります。
ですからCmakeを必要とするのです。

質問を連発する前に「OpenCVの場合は、Windows以外にもLinux、FreeBSD、macOS、Android、iOSにも対応しているから」これだけで理解できる程度に、ご自分で勉強していただけると回答者としても助かるのですが。
    • good
    • 3

あまり詳しくはありませんが、cmake以外の


クロスプラットフォーム、クロスコンパイラのビルドツールって
私は知らないです。

単純にopencvの開発を楽にするためでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!