文章目录
  1. 1. 预编译头
  2. 2. CMake 设置 GCC 的预编译头
  3. 3. cotire(compile time reducer)

预编译头

当工程大了,单机编译速度会很慢。预编译头会提高很大的速度。相关原理这里不赘述,网上很多。(或者老夫有空的时候再补充)

CMake 设置 GCC 的预编译头

一开始 Google 到一个国内同行写的 CMake 宏,用了下,貌似不是很好用。另外作者也表示还是有 Bug。

后来找到 cotire,目前使用良好。

cotire(compile time reducer)

项目地址https://github.com/sakra/cotire。具体使用方式 GitHub 里对应项目主页已经写的很清楚了(主页 man 看不明白的可以去看他的 src 里那个例子),这里只做下快捷备忘。

步骤:

  • clone 这个 Git。
  • 将 cotire 里的 CMake/cotire.cmake 文件拷到咱们自己工程的顶层 CMakeLists.txt 文件同级目录下。
  • 往这个顶层 CMakeLists.txt 里设置一个变量并 include:

    1
    2
    set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake") 
    include(cotire)
  • 在具体的 CMakeLists.txt 的 add_executable 后边再 cotire 下,如:

    1
    2
    3
    add_executable(MyExecutable ${MyExecutableSources})
    target_link_libraries(MyExecutable ${MyExecutableLibraries})
    cotire(MyExecutable)
  • 上边是自动寻找预编译头,也可以自己设置,例如我们从 VC 跨平台过来的项目,显示设置 stdafx.h,只用在 cotire 前边设置下即可:

    1
    2
    set_target_properties(MyExecutable PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "stdafx.h")
    cotire(MyExecutable)
文章目录
  1. 1. 预编译头
  2. 2. CMake 设置 GCC 的预编译头
  3. 3. cotire(compile time reducer)