質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Q&A

解決済

2回答

2472閲覧

OpenCVをソースビルドする際にstaticlibを生成したい

fuguTakahashi

総合スコア21

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

0グッド

0クリップ

投稿2021/12/10 03:21

前提・実現したいこと

恐縮ですが、プログラミング初学者なので見当違いの質問でしたら申し訳ありません。
現在、Windows用自作ソフトを配布する際にOpenCVを使用者がわざわざ自前でインストールせずに済むよう、静的リンクによって機能を組み込もうと考えております。その際に、OpenCV内でstaticlibを生成する必要があると認識しています。

  
使用しようとしている開発ツール及び環境は以下の通りです。
Windows 10 64bit
CMake 3.22.0
OpenCV 4.5.4
visual studio 2022

発生している問題・エラーメッセージ

現行のOpenCVでは、Windows用のビルド済みのものにはstaticlibが含まれておらず、次のリンクによれば生成のために自前でビルドする必要があると解説されていました。

参考リンク:
https://qiita.com/TumoiYorozu/items/b44109ec2639f4bef0c3

それに従い、Windows用のCMake-guiを用いて、Visual Studio2022をコンパイラーに選択し、BUILD_SHARED_LIBSオプションをOFFにしてビルドを行いました。しかしながら、build/win-install/ x64/vc17/staticlibディレクトリにはOpenCVConfig.cmakeしか含まれていない状態にあります。また、ビルド済みのものと比較してもディレクトリ構造が大きく異なっており、正常にビルドできているのか疑問に思っています。例えば、公式ビルドの方にはbuild/include/opencv2内に大量のヘッダファイルが存在する一方で、自前ビルドではbuild/opencv2内にはconfig.hopencv2_modules.hppの二種類のファイルしか存在せず、またbuild/includeにも.cmake及び.vcxproj関連のファイルしか存在しないという状況です。  

お手数をおかけしますが、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ビルド後にCMakeTargets/INSTALLプロジェクトをビルドするとinstallディレクトリにファイルがコピーされます。
ソリューションのビルド構成にはINSTALLプロジェクトは含まれていないので、個別に実行する必要があります。

投稿2021/12/10 10:34

mah

総合スコア591

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuguTakahashi

2021/12/10 11:41

ご回答ありがとうございます。ALL_BUID以外にもビルドが必要なことを知らなかったので、大変参考になりました。
fuguTakahashi

2021/12/10 11:49

お二人とも非常にためになるご助言をいただきまして、どちらもベストアンサーにさせていただきたいところですが、システム上できないので申し訳ありませんが、回答の早さからFKDさんをベストアンサーにしていただきました。ご了承願います。
guest

0

ベストアンサー

自前でインストールせずに済むよう

自作アプリにOpenCVのDLLを同梱配布でよいのでは?

静的リンク

質問内で確認しているフォルダが間違っています。
ライブラリ出力先は、CMakeで指定した場所内のInstallフォルダですが存在していますか。
今回ならbuild\Install\かな?
※提示の参考サイトに記載あると思いますが流し読み?

仮にInstallフォルダが存在しない場合、CMakeの基礎を学んでから使った方が良いかと思います。
CMakeは指定コンパイラのビルド用ファイルを生成するアプリです。
VSの場合、CMakeでビルド用ファイル(ソリューション)を生成し、その後VSで開いてビルドするのが一般的な流れです。

投稿2021/12/10 05:40

FKD

総合スコア268

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuguTakahashi

2021/12/10 11:40

ご回答ありがとうございます。VSやCMakeについての知識がほとんどない状態でしたので、非常に参考になりました。ご指摘の通り、CMake後にVSビルドをすることで該当のフォルダを手に入れられました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問