防止cmake使用某些CPU功能

时间:2018-06-21 10:54:38

标签: cmake fasttext

我正在一台计算机上构建fastText库,但是在具有不同CPU的另一台计算机上运行它。我是这样构建的:

mkdir build && cd build && cmake .. && make && make install

当我在另一台计算机上运行它时,出现“非法指令”错误。通过比较/ proc / cpuinfo的输出,我发现后面的机器不支持以下CPU标志:

ss nonstop_tsc aperfmperf 3dnowprefetch rsb_ctxsw tsc_adjust hle
rtm mpx avx512f rdseed adx smap clflushopt clwb avx512cd xsavec xgetbv1 ida arat

如何防止cmake(或make)使用这些功能?我希望能够在一台计算机上编译该库,并能够在另一台计算机上使用它。

1 个答案:

答案 0 :(得分:0)

您可能应该通过为第二个目标指定工具链来进行cross compiling。该工具链文件必须由您自己编写。

要进行快速测试,您还可以在项目或cmake调用中覆盖CMAKE_C_COMPILE_FEATURESCMAKE_CXX_COMPILE_FEATURES。参见cmake docs