2012-01-24 10 views
1

CMakeがconfigureスクリプトで実行するようなテストを実行できるかどうかは疑問です。具体的には、私がコンパイルしているシステムにrdtscp命令がサポートされているかどうかをテストします。それがあった場合に1をrdtscp機能が存在しない場合は、私に0を与えるだろうプロセッサ機能のCMakeテスト

cat /proc/cpuinfo | head -n 19 | tail -1 | grep -c rdtscp 

か:私はconfigureスクリプトは、私のような何かを行うことができます使用していた場合、私はLinuxを使用しています

。私はこれを使用して#define RDTSCPするかどうかを判断できます。私はそれが完全に移植可能でない場合でもCMakeと同様のことをすることが可能かどうか疑問に思っています(私はVisual Studioなどを使用していないLinux上でのみ実行しています)。

+0

バイナリはコンパイルしたマシン/ CPU上でのみ確実に動作するので、コンパイル時にこれを確認するのは悪い考えです。これは、cpuid命令を使用して実行時にこれを検出する方が良いでしょう(これについては、あなたが話しているのはx86です)。 – Maister

+0

私はこの機能をテスト中にパフォーマンス解析に使用していますが、私が持っているシステムにはrdtscpをサポートしているものもあれば、サポートしていないものもあります。私はこれらの状況下でバイナリを出荷することは悪い考えであることに同意します。 –

+1

grepで-cを使用する理由は?次のようにします:if sed -n 19p/proc/cpuinfo | grep rdtscp>/dev/null;エコーrdtscpを利用できます。 fi –

答えて

3
execute_process(COMMAND cat /proc/cpuinfo 
    COMMAND head -n 19 
    COMMAND tail -1 
    COMMAND grep -c rdtscp 
    OUTPUT_VARIABLE OUT)