A 回答 (2件)
- 最新から表示
- 回答順に表示
No.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にも対応しているから」これだけで理解できる程度に、ご自分で勉強していただけると回答者としても助かるのですが。
No.1
- 回答日時:
あまり詳しくはありませんが、cmake以外の
クロスプラットフォーム、クロスコンパイラのビルドツールって
私は知らないです。
単純にopencvの開発を楽にするためでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 Visual StudioとVisual C++ Build Toolsについて 1 2023/04/16 03:42
- C言語・C++・C# visual studio 2019において、宣言していない変数があるのにエラーなくビルド出来ました 6 2023/03/08 16:32
- ソフトウェア VisualStudio のデータブレークポイントを有効にする方法 1 2023/05/01 09:42
- その他(プログラミング・Web制作) Visual StudioでDjangoのプロジェクト配下のappを作成する方法 1 2022/05/01 03:47
- C言語・C++・C# Microsoft visual studioはインストールだけであれば無料でしょうか? また、vi 2 2022/04/03 21:24
- Java EclipseとVisual StudioをPC1台にインストールしただけではPCは重くならない? 3 2022/12/08 15:35
- C言語・C++・C# Microsoft Visual Studio Community 2019 タブキーが入力できない 1 2022/04/30 06:39
- C言語・C++・C# visual studio 2019を使っているのですが、何か間違ったところをクリックしてしまい画像 2 2023/03/06 06:46
- C言語・C++・C# Switch向けにpcでc言語でゲームを作っているのですが、開発環境はWindows10のvisua 1 2022/04/02 07:04
- C言語・C++・C# 「using Windows」でエラーが出る 3 2022/12/23 19:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows Media Playerを開くと...
-
システムコールと標準ライブラ...
-
本格的なGUIを作るのにおすすめ...
-
python urlopen error について...
-
ATLとSTLの違いは何でしょうか?
-
Google ColaboでGUI作成
-
32768以上の乱数を作りたいので...
-
C++ 標準ライブラリの実際の中...
-
LIBCMT.LIBをリンクしてコンパ...
-
プログラマーで「使えない人」...
-
横スクロールアクションのステ...
-
Ps+のフリープレイでDestiny2の...
-
関数ライブラリ一覧
-
設定ファイルを扱うライブラリ...
-
unix-c と linux-c の違いは?
-
強化学習の環境作成、AI。自動...
-
Dreamweaver ライブラリ機能に...
-
VC++を使って「ストリートファ...
-
C# EXCELセルの入力規則設定に...
-
c言語でntpdateコマンドにあた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ps+のフリープレイでDestiny2の...
-
Windows Media Playerを開くと...
-
本格的なGUIを作るのにおすすめ...
-
Google ColaboでGUI作成
-
python urlopen error について...
-
scipy っていうのをいれようと...
-
強化学習の環境作成、AI。自動...
-
C言語について。
-
マウスのクリックを自動で
-
LIBCMT.LIBをリンクしてコンパ...
-
Dreamweaverのライブラリが反映...
-
【iTunes】CDをiPhoneに取り込...
-
shaderを書かないで、GPUレンダ...
-
declaration of 'index' shadow...
-
MFC/C++ sprintf の代わりに <<
-
ライブラリ作成時のグローバル...
-
静的ライブラリから静的ライブ...
-
boostのアンインストールについて
-
統計解析ソフト「R」と「SA...
-
c言語でntpdateコマンドにあた...
おすすめ情報