2012-02-23 16 views
1

CMAKE_SIZEOF_VOID_Pというcmake変数の値に基づいてプログラムのフローを制御しようとしています。これは完璧に動作CMake:BuildSetup.cmakeファイル内から変数へのアクセス

message(${CMAKE_SIZEOF_VOID_P}) 

オフを開始するには、私はどのような値この変数は私のcmakelists.txtファイルで次のコマンドを発行することにより、複数の異なる構成の下で取った見てみたかったです。しかし、BuildSetup.cmakeファイルで上記のコマンドを実行しようとするたびに、値が返されません(エラーがスローされます)。

BuildSetup.cmakeファイルでこの変数の値にアクセスできることが重要です。これは、コンパイラに渡すフラグやその他のパラメータを決定するのに役立ちます。

私が本当に必要とするのは、cmakeがx64コンパイルを実行しているか32ビットコンパイルを実行しているかを判断する方法です。これ以外の変数がある場合(BuildSetup.cmakeファイルで定義されていないため)それは私にこれを与える、それはまた私の目的のために働くだろう。

ご協力いただければ幸いです。ありがとう。

+0

どのように 'BuildSetup.cmake'を実行していますか? CMakeLists.txtに 'include()' dする必要があります。 – arrowd

+0

@arrowdodger:次のようにコマンドラインから呼び出されます。 cmake.exe -G "Visual Studio 2008" -C BuildSetup.cmake -Wdev – user1202422

答えて

2

あなたは(私はそれがPROJECT実行のTRY_COMPILEフェーズ中に設定さだと思う)、あなたはPROJECT()コマンドを起動している後までCMAKE_SIZEOF_VOID_Pを使用することはできません。

cmake -Cを使用してBuildSetup.cmakeを呼び出すので、BuildSetup.cmakeの内容はメインCMakeLists.txt内のものの前に解析されます。

しかし、CMakeが必要とするコンパイラフラグを決定するために設定ファイルを使用しないでください。実際には、PROJECT()コマンドの後のCMakeLists.txtのどこかに含まれています。

+0

パーフェクト!ありがとう!私はBuildSetup.cmake(-C)を呼び出す前にコマンドライン引数(-D)を渡して、BuildSetup.cmake内でこれを参照してフローを制御する方法を知っていました。 – user1202422

関連する問題