2009-04-27 17 views
10

私はCMakeを使ってiPhone用のXcode設定を手動で設定しようとしています。私のcmakeのファイルのように見える(?これはこれについて移動するにも正しい方法です):すべてのiPhone用のライブラリをビルドするために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はまだ何も設定されていないので、「現在のMac OS」と表示されます。

第2に、これを行う正しい方法であると仮定して、設定をDebug-iPhoneに設定するにはどうすればよいですか。

答えて

12

私が知る限り、2つの方法があります。 XcodeのSDKROOTを設定するには、CMAKE_OSX_SYSROOTを使用するのが最も可能性が高いでしょう。変数CMAKE_OSX_ARCHITECTURESもあり、XCodeのARCHSに対応しています。

代わりにCMake's cross compiling supportを使用します。私は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自体のためにコンパイルする必要があるだろうと思いますよね?だから、おそらくビルドバリアントのカップルを持つ、これらのいずれかを実行します:SIM /本当のファイルは、シミュレータまたは実際のiphoneコンパイラツールのための環境を定義

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

その他のリンクは、this bug reportthis mailing list conversationです。

+0

私は現在、あなたの最初の提案をやっています。私はクロスコンパイルを試みましたが、適切なアーキテクチャをターゲットにすることができませんでした(正しいコンパイラを使用していても、それは奇妙でした)。私は疑問に思っています - どのようにCMAKE_OSX_SYSROOTのような変数を見つけますか?それはリストに載っているようにも見えません。 –

+1

私は個人的にどのようにしますか?この場合、私はcmakeメーリングリストに登録しています。私はそこでのiphoneについての議論を見たことがあります。これらの変数の中にはキャッシュにも現れるものがあるため、ccmakeやGUIを高度なモードで実行するとヒントが得られるかもしれません。それに失敗した場合、cmakeのソースコードでgrep -r ... – richq

2

この情報も有用である:

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

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

関連する問題