9

CMakeを使用して、特定の属性を手動で設定することにより、iPhoneのXcode構成を生成しようとしています。(これはこれを行うための正しい方法でもありますか?)私のCMakeファイルは次のようになります:

project(MYLIB)
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_CONFIGURATION_TYPES Debug Release Debug-iPhone)
set(FILES list of my files...)

add_library(mylib FILES)

set(XCODE_ATTRIBUTE_SDKROOT iphoneos2.2.1)
# more attributes later, I'm just trying to get one to work first

まず第一に、これは機能していないようです-生成されたXcodeプロジェクト(私が実行しているcmake . -G Xcode)では、SDKROOTまだ何も設定されていないため、「現在のMacOS」と表示されます。

次に、これが正しい方法であると仮定して、構成に対してのみ属性を設定するにはどうすればよいDebug-iPhoneですか?

4

2 に答える 2

11

私が知る限り、2つの方法があります。最も可能性が高いのはCMAKE_OSX_SYSROOT、XCode SDKROOT を設定するために使用することです。CMAKE_OSX_ARCHITECTURESXCode の ARCHS にマップされる変数もあります。

別の方法は、 CMake のクロス コンパイル サポートを使用することです。iPhone では使用していませんが、他の ARM プロセッサでは使用しています。次のようなツールチェーン ファイルを設定する必要があります。

set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_SYSTEM_PROCESSOR arm-elf)
set(CMAKE_C_COMPILER /path/to/complier/bin/arm-elf-gcc)
set(CMAKE_FIND_ROOT_PATH /path/to/compiler)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

そして、cmake を実行するときに、CMAKE_TOOLCHAIN_FILE変数をツールチェーン ファイルの名前に設定します。または、1 つのアーキテクチャにのみコンパイルする場合は、CMakeLists.txt ファイルに値をハードコーディングできます。しかし、iPhone シミュレーターと実際の iPhone 自体のためにクロスコンパイルする必要があると思いますよね? したがって、おそらくいくつかのビルド バリアントを使用して、これらのいずれかを実行します。

cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/my/iphone-sim.cmake .
cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/my/iphone-real.cmake .

sim/real ファイルは、シミュレータまたは実際の iphone コンパイラ ツールの環境を定義します。

このバグレポートこのメーリングリストの会話は、役立つかもしれない他のリンクです。

于 2009-04-29T20:07:25.187 に答える
2

この情報も役立つ場合があります。

このプロジェクトは、CMakeでライブラリを構築してアプリケーションをセットアップするために使用できるシンプルなiOSツールチェーンファイルを提供します。いくつかのサンプルプロジェクトが含まれています。

http://code.google.com/p/ios-cmake/

于 2012-03-20T21:04:44.343 に答える