クロスコンパイルに必要なすべての変数を設定するスクリプトがあります。以下はその一部です。
export CONFIG_SITE=~/workspace/eldk-5.4/powerpc/site-config-powerpc-linux
export CC="powerpc-linux-gcc -m32 -mhard-float --sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux"
export CXX="powerpc-linux-g++ -m32 -mhard-float --sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux"
export CPP="powerpc-linux-gcc -E -m32 -mhard-float --sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux"
export AS="powerpc-linux-as "
export LD="powerpc-linux-ld --sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux"
export GDB=powerpc-linux-gdb
私が行った場合 source environment-setup-powerpc-linux
、すべての環境変数が現在のシェルセッションにインポートされ、サンプルをコンパイルできます。
これらの変数をcmakeにインポートすることはできますか?はいの場合、どのように?
もう少し詳細:
cmakeクイックスタート を読んで、コマンドラインで変数を指定できます。
cmake -DVARIABLE1=value1 -DVARIABLE2=value2 ...
それ以外の場合、cmakeスクリプトのset
コマンドがおそらく必要です。 リファレンスマニュアル を参照してください。 環境変数PATHを設定するには、次のようにします。
set(ENV{PATH} "/home/martink")
通常の変数を設定するには、次のようにします。
set(variable "value")
設定する必要があるのは不明です。おそらく環境の設定です。
とはいえ、cmakeを呼び出す前に環境変数を設定することは、多くの場合、この場合のように問題を解決する最も簡単な解決策です: https://stackoverflow.com/a/15053460/684229
CMakeで確実にクロスコンパイルを行うためのコンパイラとフラグを設定する唯一の方法は、見つけたチュートリアルで行われたように、ツールチェーンファイルを使用することです。
同じ問題(スクリプトを生成するツールキットがコンパイル環境を設定する)に直面したとき、スクリプトと共にツールチェーンファイルを生成するようにツールキットを変更しました。
実際には、cmake-toolchain-fileはそれほど頻繁に変更されません。ターゲットに使用される基本的なフラグは、プロジェクトのかなり早い段階で修正されます-通常は。 CMakeのCMAKE_BUILD_TYPE
ツールチェーンファイルを変更せずに、デバッグコンパイルとリリースコンパイルを切り替えることができます。
サポートするターゲットが異なる場合は、異なるツールチェーンを作成し、CMakeでout-of-source-buildを使用します。
[〜#〜] edit [〜#〜]:できることの1つは、-D-argumentを使用してcmakeを呼び出し、目的の変数を設定し、以前にスクリプトをソースしたことです。
source environment-setup-powerpc-linux
cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX etc
結果は、ツールチェーンファイルを使用した場合と同じになります。