cmake list子命令无法识别;分隔列表

时间:2018-06-23 00:03:40

标签: cmake

使用CMake 3.9,list()子命令存在一些奇怪的问题。 以下代码段

foreach(__lib ${_blas})
    message(STATUS "DEBUG: before ${__lib}")
endforeach()
message(STATUS "DEBUG: before ${_blas}")
list(LENGTH _blas len)
message("_blas has length ${len}")

给出以下输出:

-调试:-Wl之前-启动组

-调试:/share/sw/licensed/intel/pstudio_xe_cluster-2015/composer_xe_2015.0.090/mkl/lib/intel64/libmkl_intel_lp64.a之前

-调试:/share/sw/licensed/intel/pstudio_xe_cluster-2015/composer_xe_2015.0.090/mkl/lib/intel64/libmkl_sequential.a之前的

-调试:/share/sw/licensed/intel/pstudio_xe_cluster-2015/composer_xe_2015.0.090/mkl/lib/intel64/libmkl_core.a之前

-调试:-Wl之前,-结束组

-调试:-lpthread之前

-调试:-lm之前

-调试:-Wl之前-启动组; /share/sw/licensed/intel/pstudio_xe_cluster-2015/composer_xe_2015.0.090/mkl/lib/intel64/libmkl_intel_lp64.a; / share / sw / licensed /intel/pstudio_xe_cluster-2015/composer_xe_2015.0.090/mkl/lib/intel64/libmkl_sequential.a;/share/sw/licensed/intel/pstudio_xe_cluster-2015/composer_xe_2015.0.090/mkl/lib/lib-intel64/ink。 ,-end-group; -lpthread; -lm

_blas的长度为0

由于某些原因,foreach()会将_blas识别为列表,而list()子命令则不能。到底是怎么回事?

1 个答案:

答案 0 :(得分:0)

弄清楚了:_blas是一个宏参数,因此不能在列表命令中使用。