2012-01-24 102 views
1

我想知道CMake是否有可能像運行配置腳本一樣運行測試。具體而言,我想測試我正在編譯的系統是否支持rdtscp指令。處理器功能的CMake測試

我使用的Linux,如果我用一個配置腳本,我可以這樣做:

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

這會給我0如果rdtscp特徵是不存在或1如果不是的。然後我可以使用它來確定是否要#define RDTSCP。我想知道是否可以做類似CMake的事情,即使它不是完全可移植的(我只在Linux下運行,我沒有使用Visual Studio等)。

+0

聽起來在編譯時檢查它是個壞主意,因爲二進制文件只能在您編譯的機器/ CPU上可靠地工作。這可能是一個更好的方法來檢測這在運行時使用cpuid指令(假設這是你正在談論的x86)。 – Maister

+0

我只在測試期間使用此功能進行性能分析,但是我有一些支持rdtscp的系統,有些則不支持。我同意在這種情況下發佈一個二進制文件是一個壞主意。 –

+1

爲什麼在grep中使用-c?只要:如果sed -n 19p/proc/cpuinfo | grep rdtscp>/dev/null;然後echo rdtscp可用; fi –

回答

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