Cmake将参数解析为代码

Posted

技术标签:

【中文标题】Cmake将参数解析为代码【英文标题】:Cmake parse parameters into code 【发布时间】:2018-01-31 21:51:50 【问题描述】:

我可以从cmake 的配置文件中解析出一个参数并将其作为参数粘贴到C++ 代码中吗?

我需要根据某些系统属性为std::array<T,N>动态设置模板值N

N = (a - b) / c

所有应该是系统参数。

【问题讨论】:

/OT @El Dude 嘿!! 这些系统属性在 CMake 中可用吗? 将预处理器宏定义传递给编译器? 【参考方案1】:

您可以使用 -D 编译器标志将预处理器宏定义传递给 c++ 编译器:

MY_CALCULATED_ARRAY_SIZE = "(a - b) / c"
CXX_FLAGS = $(CXX_FLAGS) -DN=$(MY_CALCULATED_ARRAY_SIZE)

【讨论】:

我可以使用 cmake 从指定文件中自动读取a,b,c 吗? @ElDude 包括其他一些包含定义的CMakeLists.txt 格式文件。 @ElDude 让我们一起来个“白俄罗斯人” ;-)。您可以通过多种方式使用 CMake 来实现您想要实现的目标。实际上,您的问题对此提出了过于宽泛。最后归结为,您如何将N 向下传递给您的c++ 代码,而CXX_FLAGS 中的-D 是要走的路。其余部分在 CMake 文档中介绍。

以上是关于Cmake将参数解析为代码的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数解析为 RESTful API

JavaScript将函数参数解析为getElementsByClassName

将 XML 解析为 sql 参数、datetime2 和位问题

如何将今天的日期解析为参数

如何将(宽度)x(高度)命令行参数解析为两个参数?

参数将 CruiseControl.net 解析为 NANT