0

バックグラウンド

私の目標は、armv7s (s は難しい部分です) アーキテクチャをサポートする ios 用の OpenCV をコンパイルすることですが、進歩を遂げることができませんでした。私の最近の理論では、問題は、ライブラリに付属の cmake ファイルが、armv7s をサポートしているとは思わないコンパイラとして gcc を使用していることです (間違っている場合は教えてください)。ただし、私はcmakeが初めてで、コンパイラを変更できませんでした。

コンパイラが原因だと思う理由は、次の行のためです

set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)" CACHE string  "Build architecture for iOS")

私の知る限り、armv7s を含める必要があります。その行をに変更する

set (CMAKE_OSX_ARCHITECTURES "armv6;armv7;armv7s;i386" CACHE string  "Build architecture for iOS")

効果がありませんでした。

コンパイラの設定方法については、ここここ、およびここに説明があることを知っています。私の問題は、既存の cmake システムを変更しようとしていて、変更がどのような影響を与えるかわからないことです。問題のコードはここからダウンロードできます。フレームワークを構築するために、OpenCV-2.4.2/ios で Python スクリプトを実行します。

python build_framework.py ~/Desktop

関連するcmakeファイルがOpenCV-2.4.2/ios/cmakeにあることがわかります。3つしかなく、すべてかなり短いです。私の最近の試みは、ツールチェーンの2行を変更することでした

CMAKE_FORCE_C_COMPILER (gcc gcc)
CMAKE_FORCE_CXX_COMPILER (g++ g++)

SET (DEVROOT    "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer")
SET (CC         "${DEVROOT}/usr/bin/llvm-gcc-4.2")
SET (CXX        "${DEVROOT}/usr/bin/llvm-g++-4.2")
CMAKE_FORCE_C_COMPILER          (${CC} CLang)
CMAKE_FORCE_CXX_COMPILER        (${CXX} CLang)

このSOの質問をコピーしようとして。

質問

  1. 私の最初の最も重要な質問は、これが私の深みから外れているかどうかです。コンパイラ/ターゲット アーキテクチャを変更することは、どこかに設定された単純なフラグであると想定していましたが、それが真実であるとは確信が持てなくなりました。また、ディレクトリ全体 OpenCV-2.4.2/cmake があり、内容について心配する必要がないことを期待して避けてきた、はるかに大きなcmakeファイルでいっぱいです。これは 10 時間以内に解決できる問題ですか?
  2. 前の質問に「はい」と答えた場合、何か方向性を教えてもらえますか? 推奨読書?OpenCV-2.4.2/cmake の内容を無視することは正当化されますか? 私はかなり長い間暗闇の中で撮影してきましたが、うまくいきませんでした。
  3. これが私が最初に望んでいたのと同じくらい簡単であることが判明した場合、どうすればよいですか?

アップデート

これを行う方法がわかりませんでしたが、コンパイル設定を簡単に変更できるxcode バージョンのライブラリがここにあります。

4

2 に答える 2

0

あなたの質問には多くのリンクがありますが、CMake でクロスコンパイルする方法に関する情報を含む元のリンクが見つかりませんでした。

既存のビルド システムでは何も変更しないでください。

一般に、ターゲット アーキテクチャ用のツールチェーン ファイルを作成し、それを使用して cmake を実行する必要があります。

cmake -DCMAKE_TOOLCHAIN_FILE=< ツールチェーン ファイル > < opencv からの CMakeLists.txt へのパス >

于 2012-09-27T08:23:05.563 に答える
0

必要なものを設定CMAKE_C_COMPILIERCMAKE_CXX_COMPILIERます。

編集:これは、armv7用にこれを構築することにすでに成功していると仮定しています。
Edit2: これはコンパイラを変更するだけです。

于 2012-09-24T19:59:31.917 に答える