如何在CMake中以"bar = foo"语法加载变量?

Ann*_*sum 5 cmake key-value

很高兴能够在Makefile和shell脚本之间共享相同的文件,因为它们都可以处理键值对的以下语法:

$> cat config 
  var1=value
  var2=value
  var3=value
  var4=value
  var5=value
Run Code Online (Sandbox Code Playgroud)

所以,只需要source config一个shell脚本就可以include configMakefile.但是,使用CMake语法就变成了SET(var1 value).有一些简单的方法,我可以使用上面的语法用变量文件提供CMake吗?我的意思很简单,我不喜欢sed在它上面运行.

Fra*_*ser 17

@ Guillaume的答案非常适合从CMakeLists.txt中生成配置文件.

但是,如果您要将这样的配置文件的内容导入 CMake环境中,则需要添加以下内容:

file(STRINGS <path to config file> ConfigContents)
foreach(NameAndValue ${ConfigContents})
  # Strip leading spaces
  string(REGEX REPLACE "^[ ]+" "" NameAndValue ${NameAndValue})
  # Find variable name
  string(REGEX MATCH "^[^=]+" Name ${NameAndValue})
  # Find the value
  string(REPLACE "${Name}=" "" Value ${NameAndValue})
  # Set the variable
  set(${Name} "${Value}")
endforeach()
Run Code Online (Sandbox Code Playgroud)