【问题标题】:CMake in macOS, precompiled header files (.pch) supportmacOS 中的 CMake,预编译头文件 (.pch) 支持
【发布时间】:2018-01-23 07:47:16
【问题描述】:

我正在考虑将我的项目编译从繁琐的 Xcode 转移到方便的 CMake 环境中。

但是,我无法在 macOS 中找到对模拟 Xcode 流程的预编译头文件 (.pch) 的 cmake 支持。

在Xcode中,第一阶段是ProcessPCH,其中pch文件编译根据源代码语言编译为独立文件(我的项目包含mmmcpp文件)

IE:

1. objective-c(.m): `-x objective-c-header` 
2. objective-c++(.mm): `-x objective-c++-header` 
3. c++(.cpp): `-x c++-header`
... 

结果是带有后缀.pch.pch的二进制Macho目标。

然后,为了使用项目中的每个源文件预编译 pch,将以下标志添加到编译命令 -include <pch_output_file_from_the_previous_stage>

在 CMake 中有什么方法可以做到这一点吗?有没有等效的替代品?

编辑:

我透露曾经可以使用常规 .h 文件和 GCC 编译器为 macOS 项目设置预编译头文件,但我还没有找到 Xcode 现在使用的 clang/clang++ 的相应标志

set_target_properties(
    executable
    PROPERTIES
    XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "path/stdwx.h"
    XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES"
)

【问题讨论】:

标签: c++ objective-c xcode cmake clang


【解决方案1】:

CMake 刚刚获得了对 PCH 的支持,它应该会在 2019 年 10 月 1 日即将发布的 3.16 版本中提供:

https://gitlab.kitware.com/cmake/cmake/merge_requests/3553

  target_precompile_headers(<target>
    <INTERFACE|PUBLIC|PRIVATE> [header1...]
    [<INTERFACE|PUBLIC|PRIVATE> [header2...] ...])

关于支持目标之间共享 PCH 的讨论正在进行中:https://gitlab.kitware.com/cmake/cmake/issues/19659

这也包括对 xcode 生成器的支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 2020-08-16
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多