【发布时间】:2012-01-24 21:14:34
【问题描述】:
我想知道 CMake 是否可以像使用配置脚本一样运行测试。具体来说,我想测试我正在编译的系统是否支持 rdtscp 指令。
我使用的是 Linux,如果我使用的是配置脚本,我可以执行以下操作:
cat /proc/cpuinfo | head -n 19 | tail -1 | grep -c rdtscp
如果 rdtscp 功能不存在,它会给我0,如果存在,它会给我1。然后我可以使用它来确定是否#define RDTSCP。我想知道是否可以用 CMake 做类似的事情,即使它不是完全可移植的(我只在 Linux 下运行,我没有使用 Visual Studio 等)。
【问题讨论】:
-
在编译时检查这个听起来是个坏主意,因为二进制文件只能在你编译的机器/CPU上可靠地工作。使用 cpuid 指令在运行时检测它可能是一种更好的方法(假设这是您正在谈论的 x86)。
-
我只是在测试过程中使用此功能进行性能分析,但我支持的一些系统对 rdtscp 有一些不支持。我同意在这种情况下发布二进制文件是个坏主意。
-
为什么在 grep 中使用 -c?只需:如果 sed -n 19p /proc/cpuinfo | grep rdtscp > /dev/null;然后 echo rdtscp 可用;菲
-
谢谢,我同意这样更好。但我感兴趣的主要是是否有一种将其与运行 CMake 结合的好方法。我知道使用配置脚本之类的东西是可能的。