在 C++ 项目中使用预编译头

问题描述

我有一个具有以下结构的项目

root/
  CMakeLists.txt
  mylibrary.hpp
  test/
    CMakeLists.txt  // included from root's CMakeLists
    A.cpp //includes<mylibrary.hpp>
    B.cpp // also
    C.cpp // also
    ...
    Z.cpp // also

我确信可以通过预编译 (pch) mylibrary.hpp

来加速(测试的)编译

如果可以,我如何告诉 CMake 使用预编译头文件

此外,该项目使用不同的编译器、gnu、clang、nvcc、intel(不同的构建配置),因此预编译头的生成可能并不总是可用。

CMake 的所有测试都可以正常工作。 我尝试使用 target_precompile_headers 作为

  target_precompile_headers(A PUBLIC ../mylibrary.hpp)
  target_precompile_headers(B PUBLIC ../mylibrary.hpp)
  ...

但它实际上,因为它为每个测试生成一个新的预编译头实例。 (PRITAVE 给出相同(缓慢)的结果,使用 INTERFACE 没有任何不同。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)