我正在浏览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中的工作原理是什么?如何确定哪些是有效值?在构建项目时,用户如何设置值?
答案 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