Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ macOS中的CMake,预编译头文件(.pch)支持_C++_Objective C_Xcode_Cmake_Clang - Fatal编程技术网

C++ macOS中的CMake,预编译头文件(.pch)支持

C++ macOS中的CMake,预编译头文件(.pch)支持,c++,objective-c,xcode,cmake,clang,C++,Objective C,Xcode,Cmake,Clang,我正在考虑将我的项目编译从繁琐的Xcode转移到方便的CMake环境中 但是,我在macOS中找不到对模拟Xcode流的预编译头文件(.pch)的cmake支持 在Xcode中,第一阶段是ProcessPCH,其中pch文件编译根据源代码语言编译为独立文件(我的项目包含mmm和cpp文件) 即: 结果是后缀为.pch.pch的二元Macho目标 然后,为了使用项目中的每个源文件预编译pch,将以下标志添加到编译命令-include 在CMake中有什么方法可以做到这一点吗?有没有同等的替代方案

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

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

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

即:

结果是后缀为
.pch.pch
的二元Macho目标

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

在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"
)

CMake刚刚获得了对PCHs的支持,应在即将发布的3.16版本中提供,该版本将于2019-10-01发布:

target\u预编译\u头(
[校长1…]
[[校长2…]…])
目前正在讨论支持目标公司之间共享PCH:

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

set_target_properties(
    executable
    PROPERTIES
    XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "path/stdwx.h"
    XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES"
)
  target_precompile_headers(<target>
    <INTERFACE|PUBLIC|PRIVATE> [header1...]
    [<INTERFACE|PUBLIC|PRIVATE> [header2...] ...])