什么是#cmakedefine预处理程序指令?

时间:2017-03-10 13:20:14

标签: cmake c-preprocessor

我正在浏览the source-code for ZeroMQ,我想从源代码构建它。在里面我找到了platform.hpp.in,其中包含:

...
#cmakedefine ZMQ_HAVE_SO_PEERCRED
#cmakedefine ZMQ_HAVE_LOCAL_PEERCRED

#cmakedefine ZMQ_HAVE_SOCK_CLOEXEC
#cmakedefine ZMQ_HAVE_SO_KEEPALIVE
#cmakedefine ZMQ_HAVE_TCP_KEEPCNT
...

我假设这些cmakedefine宏用作生成头文件的模板,但它们在CMake中的工作原理是什么?如何确定哪些是有效值?在构建项目时,用户如何设置值?

1 个答案:

答案 0 :(得分:7)

configure_file处理的文件的一部分。为您的文件调用configure_file后,#cmakedefine FOO将替换为#define <valueFoo>和&lt; valueFoo&gt;是CMake变量FOO的值。这用于通过定义的C预处理器宏将Vale从Vake传递到C或C ++。

文档:https://cmake.org/cmake/help/latest/command/configure_file.html