我正在考虑将项目编译从繁琐的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++
答案 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生成器的支持。