代码之家  ›  专栏  ›  技术社区  ›  Zohar81

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

  •  2
  • Zohar81  · 技术社区  · 8 年前

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

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

    在Xcode中,第一阶段是 ProcessPCH 其中pch文件编译根据源代码语言编译为独立文件(我的项目包含 m mm 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,将以下标志添加到编译命令中 -include <pch_output_file_from_the_previous_stage>

    在CMake中有什么方法可以做到这一点吗?是否有任何等效的替代方案?

    编辑:

    我透露,曾经有可能使用常规的 .h 文件和GCC编译器,但我尚未找到 clang/clang++ 现在由Xcode使用

    set_target_properties(
        executable
        PROPERTIES
        XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "path/stdwx.h"
        XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES"
    )
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   janisozaur xtofl    7 年前

    CMake刚刚获得了对PCHs的支持,将于2019-10-01发布的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生成器的支持。