【问题标题】:CMake - Header files with preprocessor directivesCMake - 带有预处理器指令的头文件
【发布时间】:2016-10-11 12:08:16
【问题描述】:

是否可以使用 C/C++ 预处理器指令编译头文件? (定义)

我有一个项目,其中包含一些没有 cpp 文件的头文件。例如不同平台的 typedef。

我正在寻找一个可以集成到我的 cmakefile 中的简单解决方案。

【问题讨论】:

  • 它们不会被包含在其他一些 cpp 文件中吗?如果是这样,它们会在那里编译。
  • 只有包含的空 cpp 文件?
  • 我有很多这种头文件。费用会很大。
  • 即使没有人包含这些文件,它们还能做什么?
  • @Erik:请获取您最喜欢的 C++ 书籍并阅读有关头文件的用途以及它们如何适合构建过程的信息。还回顾一下#definetypedef 等实际上做了什么。你显然有一些误解。

标签: c++ cmake


【解决方案1】:

您是否正在寻找预编译的标头?它们可以通过 makefile 编译。

【讨论】:

  • 我认为这可能是解决方案。你能给我看一个简短的例子吗?
【解决方案2】:

如果您的头文件包含在 cpp 文件中,它们将被自动使用。如果不包括它们,那么“编译”它们有什么意义?

所以基本上,答案是否定的,你不能只编译头文件。编译的目的是生成可执行文件,即在执行时执行操作的文件。定义不是行动,它们自己什么都不做。

【讨论】:

  • 其实定义就是所有动作的所在!
  • 我不明白。你的意思是#define PI 3.14 是一个动作?
  • 这是一个定义。术语definition 在C 中定义良好。OP 显然不仅有宏,还有typedefs。目前尚不清楚他为什么希望它们被独立编译。
  • OP 明确声明“定义”。而且我仍然不明白您如何将 typedef 视为一种操作。
  • 带括号的词通常是一个例子,可能是其他的。和“例如不同平台的类型定义。”表明他还考虑了其​​他因素。这些问题是如此模糊,不清楚他是否有其他定义。条款:阅读标准!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多