我当时正在考虑将我的项目编译从繁琐的Xcode移到方便的CMake环境中。
但是,我无法在模拟Xcode流的macOS中找到对预编译头文件(.pch)的cmake支持。
在Xcode中,第一步是ProcessPCH
根据源语言将pch文件编译为独立文件(我的项目包含m
mm
和cpp
文件)
IE浏览器:
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进行预编译,将以下标志添加到编译命令中 -include <pch_output_file_from_the_previous_stage>
在CMake中有什么办法吗?有什么等效的选择吗?
编辑:
我透露曾经可以使用常规.h
文件和GCC编译器为macOS项目设置预编译的标头,但我还没有找到clang/clang++
Xcode现在使用的相应标志
set_target_properties(
executable
PROPERTIES
XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "path/stdwx.h"
XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES"
)
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生成器的支持。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句