一、預(yù)編譯頭
當(dāng)工程大了,單機(jī)編譯速度會(huì)很慢。預(yù)編譯頭會(huì)提高很大的速度。相關(guān)原理這里不贅述,網(wǎng)上很多。(或者老夫有空的時(shí)候再補(bǔ)充)
二、cmake設(shè)置gcc的預(yù)編譯頭
一開(kāi)始google到一個(gè)國(guó)內(nèi)同行寫(xiě)的cmake宏,用了下,貌似不是很好用。另外作者也表示還是有bug。
后來(lái)找到cotire。目前使用良好。
三、cotire(compile time reducer)
項(xiàng)目地址https://github.com/sakra/cotire。具體使用方式github里對(duì)應(yīng)項(xiàng)目主頁(yè)已經(jīng)寫(xiě)的很清楚了(主頁(yè)man看不明白的可以去看他的src里那個(gè)例子),這里只做下快捷備忘。
步驟:
1. clone這個(gè)git。
2. 將cotire里的CMake/cotire.cmake拷到咱們自己工程的頂層CMakeLists.txt同級(jí)目錄下。
3. 往這個(gè)頂層CMakeLists.txt里設(shè)置一個(gè)變量并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. 上邊是自動(dòng)尋找預(yù)編譯頭,也可以自己設(shè)置,例如我們從vc跨平臺(tái)過(guò)來(lái)的項(xiàng)目,顯示設(shè)置stdafx.h,只用在cotire前邊設(shè)置下即可:
set_target_properties(MyExecutable PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "stdafx.h")
cotire(MyExecutable)