CMake in macOS,预编译头文件(.pch)支持

时间:2018-01-23 07:47:16

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

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

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

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

I.E:

cpp

,结果是带有后缀1. objective-c(.m): `-x objective-c-header` 2. objective-c++(.mm): `-x objective-c++-header` 3. c++(.cpp): `-x c++-header` ... 的二进制Macho目标。

然后,为了对项目中的每个源文件预编译pch,将以下标志添加到编译命令.pch.pch

有没有办法在CMake中这样做?有没有相同的替代品?

编辑:

我透露曾经可以使用常规-include <pch_output_file_from_the_previous_stage>文件和GCC编译器为macOS项目设置预编译头,但我还没有找到.h的相应标志由Xcode使用

clang/clang++

1 个答案:

答案 0 :(得分:2)

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生成器的支持。