4

cmake を使用して VxWorks 用にクロスコンパイルしています。初めてcmakeを実行するとき、コンパイラ、ターゲットOSなどに関する情報を提供する必要があります..

クロスコンパイル ダイアログには、私が設定した 3 つのターゲット システム設定があります。

  1. オペレーティング·システム
  2. バージョン
  3. プロセッサ

(コンパイラなどが続きます)

を使用して最初のものを取得できますCMAKE_SYSTEM_NAMEが、バージョンとプロセッサを取得できません。どちらも空の文字列を返します。

次に例を示します。

MESSAGE("CMAKE_SYSTEM_PROCESSOR:   ${CMAKE_SYSTEM_PROCESSOR}")
MESSAGE("CMAKE_SYSTEM_VERSION:   ${CMAKE_SYSTEM_VERSION}")

出力:

CMAKE_SYSTEM_PROCESSOR:   
CMAKE_SYSTEM_VERSION:  

私の Cmake のバージョンは2.8.10.2で、ターゲット OS は VxWorks です (これが重要な場合、コンパイラは WindRiver GNU です)。

最初に設定したバージョンとプロセッサを取得するにはどうすればよいですか? または、cmake が認識していない OS にクロスコンパイルすると、これは不可能ですか?

(ちなみに、コンパイルは正常に動作します)

4

1 に答える 1

0

これは今のところ不可能のようです。私はいつも空の文字列を取得しています。

ただし、有効な解決策があり、それがより良い方法だと思います:

前:

クロスコンパイル設定 (コンパイラとターゲット システム、質問を参照) を指定してから、CMake リスト内の VxWorks 固有の部分で実行されます (if( VxWorks )他のシステムが使用されているときに実行されないようにチェックされています)。

(解決策)

VxWorks と必要なプロセッサ用のツールチェーン ファイルプラットフォーム ファイルを作成しました。

短所:

  • いくつかの追加ファイルを作成する必要があります:
    • ツールチェーン ファイル
    • VxWorks のプラットフォーム ファイル
    • 各プロセッサ (およびプロセッサの種類、GnuおよびDiab )のその他のプラットフォーム ファイル

長所:

  • CMake リストがよりクリーンになりました
  • プロジェクトとターゲットの設定を分離する
  • システムとプロセッサの設定を分離 - 非常に明確な方法で新しいプロセッサを簡単に追加できますが、システム設定は維持します
  • ツールチェーン ファイルにいくつかの設定を記述し、CMake が関連するシステム/プロセッサ設定を読み込みます
  • ...
于 2013-05-29T18:11:48.733 に答える