【问题标题】:Clang CMAKE Precompiled headersClang CMAKE 预编译头文件
【发布时间】:2019-01-15 17:14:16
【问题描述】:

我找到了很多关于如何将预编译头文件用于 MSVC 的示例,但我似乎找不到任何使用 clang 的示例。从这篇 SO 帖子中,我可以看到 clang 命令,但我想知道它们是如何转换为 cmake 的:

Decrease clang compile time with precompiled headers

创建预编译的头文件包括所有你不改变的头文件>>到Query.h中并使用:

clang -cc1 Query.h -emit-pch -o Query.h.pch 使用预编译头类型:

clang -cc1 -include-pch Query.h.pch Query.cpp -shared -o libquery.so; Query.cpp 需要包含 Query.h

编辑:使用 clang 6 和 cmake 3.11.2

【问题讨论】:

  • 我猜你可能会通过使用像 ccache 这样的编译器缓存获得比使用预编译头文件更大的好处,并且同时避免 PCH 的所有问题。
  • 我已经在用ccache了,但是项目很大。如果任何主要头文件发生变化,重新编译大约需要 20 分钟。我确实有一个永远不会更改的 stdinc.hpp 文件,我认为如果我可以将其作为预编译头文件,编译时间将会提高(只是一个理论)。
  • 作为副本建议的答案显示了很多 MSVC 示例,正如 OP 所抱怨的那样,所以我怀疑它是否能回答他的问题。
  • 同意 @MichaelSurette 不知道为什么它被标记为重复。
  • 糟糕,抱歉复制错误。找到“MSVC”这个词,但没有注意到这是给定问题的一个无词。 @BradenEdmunds:在您的问题帖子中提及其他问题时,最好从该问题/答案中引用关键短语。额外的两行代码不会对您的问题帖子造成伤害,但无需打开引用的问题即可了解您想要什么。

标签: c++ cmake clang precompiled-headers


【解决方案1】:

找到适合我的解决方案:

# add the pch custom target as a dependency
add_dependencies(corelib pch)

# add the flag
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include-pch ${CMAKE_CURRENT_BINARY_DIR}/stdinc.hpp.pch")

# target
add_custom_target(pch COMMAND clang -x c++-header ${CMAKE_CURRENT_SOURCE_DIR}/src/stdinc.hpp -o ${CMAKE_CURRENT_BINARY_DIR}/stdinc.hpp.pch)

【讨论】:

    猜你喜欢
    • 2014-02-23
    • 1970-01-01
    • 2010-09-13
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 2010-11-20
    相关资源
    最近更新 更多