一、預編譯頭
當工程大了,單機編譯速度會很慢。預編譯頭會提高很大的速度。相關原理這里不贅述,網上很多。(或者老夫有空的時候再補充)
二、cmake設置gcc的預編譯頭
一開始google到一個國內同行寫的cmake宏,用了下,貌似不是很好用。另外作者也表示還是有bug。
后來找到cotire。目前使用良好。
三、cotire(compile time reducer)
項目地址https://github.com/sakra/cotire。具體使用方式github里對應項目主頁已經寫的很清楚了(主頁man看不明白的可以去看他的src里那個例子),這里只做下快捷備忘。
步驟:
1. clone這個git。
2. 將cotire里的CMake/cotire.cmake拷到咱們自己工程的頂層CMakeLists.txt同級目錄下。
3. 往這個頂層CMakeLists.txt里設置一個變量并include:
set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake")
include(cotire)
4. 在具體的CMakeLists.txt的add_executable后邊再cotire下,如:
add_executable(MyExecutable ${MyExecutableSources})
target_link_libraries(MyExecutable ${MyExecutableLibraries})
cotire(MyExecutable)
5. 上邊是自動尋找預編譯頭,也可以自己設置,例如我們從vc跨平臺過來的項目,顯示設置stdafx.h,只用在cotire前邊設置下即可:
set_target_properties(MyExecutable PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "stdafx.h")
cotire(MyExecutable)