2013-11-27 6 views
10
私はC++/C "プロジェクト"(MY_PROJECT)といくつかのC++/C "ターゲット" を生成するために、Xcodeのでcmakeのを使用しています

CMakeのトップレベルのXCodeプロジェクトプロパティ

(1バイナリで、残りはライブラリです)各サブディレクトリは、どちらかとCMakeLists.txtを持って

project(my_project) 
add_subdirectory(library_projectA) 
add_subdirectory(library_projectB) 
add_subdirectory(binary_project) 

add_library(library_projectA) 

それとも

私のCMakeLists.txtは次のようになります
add_executable(binary_project) 

これは、サブプロジェクトを参照するトップレベルのmy_project.xcodeprojを生成します。

ターゲット、プロジェクト、デフォルト

私はMY_PROJECTのために、すなわちを「プロジェクト」フィールドを変更したい

Xcodeは、この階層的なプロパティの継承を(左のフィールドは右フィールドよりも優先されます)があります。これはすべてのターゲットに影響するはずです。

add_custom_target(my_project) 
add_target_properties(my_project PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "NO") 

をしかし、これは動作しません:

私はこれを試してみました。

私は「目標」の一つでこれを置く場合ことに注意してください:

add_target_properties(binary_project PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "NO") 

その後、これは動作しますが、それだけで「ターゲット」

ため、これが明確でない場合は、私は思います実用的な例を提供するのはうれしいですが、これはちょっと時間がかかります...

問題が発生したときに誰かがすばやく修正することを知っていれば、私はXcodeをクリーンインストールしたいこの(または他の)警告を出してください:

プロジェクト 'my_project'は、アーキテクチャの設定を上書きします。これにより、 の設定が削除され、Xcodeはアクティブプラットフォームで利用可能なハードウェアと 展開ターゲットに基づいて、 アーキテクチャを自動的に選択します。

答えて

3

私は最近同じことが必要なので、私はCMakeのソースコードを調べなければなりませんでした。

現在、ターゲットに対してのみ属性を設定でき、プロジェクトレベルで属性を設定する方法はありません。

ただし、プロジェクトレベルでONLY_ACTIVE_ARCHをわずかに異なる方法で変更することはできます。 cmakeの実装されたロジックは次のとおりです(バージョン2.8の場合)。12):

  1. ONLY_ACTIVE_ARCH次いで、CMAKE_OSX_ARCHITECTURESが設定されていない場合、cmakeのプロジェクトレベルでYESONLY_ACTIVE_ARCHを設定し、CMAKE_OSX_ARCHITECTURESが定義されている場合Xcodeのバージョンに応じて、それは$(ARCHS_STANDARD_32_64_BIT)又は$(ARCHS_STANDARD_32_BIT)
  2. いずれかにデフォルトのアーキテクチャを設定しますXCodeのは、脂肪のライブラリを構築し、私は手動でのデバッグCのためにYESにONLY_ACTIVE_ARCH設定の最大のライブラリのためのように、私は、CMAKE_OSX_ARCHITECTURESを設定することを好むNO

なり構成のみ。

set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)") 

... 

set_target_properties(test PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] "YES") 
+0

悲しいことに、これはOPが話している警告を削除しないと修正XCodeのは、いくつかの奇妙な理由で他の設定の束を除去する示唆して使用するように私たちを強制的に:これはそのように見えます。 – Samaursa

関連する問題