8 月 2024

记录一个cmake局部变量传入子项目问题CMP0077

最近在搞一个依赖了开源库fftw(写此文时用的官网最新发布版3.3.10,https://www.fftw.org/fftw-3.3.10.tar.gz)的代码,项目使用cmake构建,fftw依赖以子项目的方式引入:

add_subdirectory(dep/fftw-3.3.10)

测试后发现调用代码使用的是float版的接口,也就是需要通过设置“ENABLE_FLOAT”这个选项来编译fftw,参见:

set (FFTW_VERSION 3.3.9)

set (PREC_SUFFIX)
if (ENABLE_FLOAT)
  set (FFTW_SINGLE TRUE)
  set (BENCHFFT_SINGLE TRUE)
  set (PREC_SUFFIX f)
endif ()

由于这个是调用代码的刚需,所以不想通过cmake命令行传递此设置,于是想到了再add_subdirectory前临时设置下这个选项,如下:

Continue reading…