gpt4 book ai didi

cmake - #cmakedefine 预处理器指令是什么?

转载 作者:行者123 更新时间:2023-12-02 02:17:43 28 4
gpt4 key购买 nike

我正在查看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 中到底如何工作?我如何确定什么是有效值?用户在构建项目时如何设置值?

最佳答案

它是由 CMake 处理的文件的一部分 configure_file命令。当为文件调用 configure_file 时,#cmakedefine FOO 被替换为:

  • #define FOO - 如果 CMake 变量 FOO 设置为 ON 或 TRUE。
  • /* #undef FOO */ - 否则。

这是将值从 CMake 传递到 C 或 C++ 源代码的一种方法:configure_file() 的结果是一个 C/C++ 头文件,它包含在您想要的代码中尊重 CMake 变量值。

关于cmake - #cmakedefine 预处理器指令是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42719401/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com