2011-07-07 33 views
0

在一個cmake項目中有幾個相互依賴的庫和幾個可執行文件,並且cmake計算庫間依賴關係並生成非遞歸生成文件,從而使空編譯將會很快(至少對於unix來說)。將CMakeLists劃分爲子項目的正確方法

這個example看起來過時了,在最近的cmake中並沒有真正的工作,並且似乎產生了遞歸的makefile。

+0

你是什麼_empty compilation_意思,爲什麼你堅持非遞歸的Makefile? – kynan

+0

@kynan,空編譯 - 在項目沒有任何更改時發出'make'。我需要這不到1秒。使用遞歸使其可能需要5秒鐘,這在我的工作流程中是不可接受的。 –

回答

1

按照CMake FAQ產生遞歸Makefile文件需要通過設計:

CMake的實際上並不產生下面的目錄結構,真正的遞歸makefile文件。它會產生一個固定的3電平生成文件結構,其中每個級別具有限定的目的:

  1. 生成文件:命令行界面進入點。地圖 「讓」 調用轉換調用2級的Makefile:
    • make -f CMakeFiles/Makefile2 ...
  2. CMakeFiles/Makefile2:間目標相關性。評估了依賴順序調用每個目標的依賴目標,並建立在3級以下步驟:
    • make -f CMakeFiles/$(target).dir/build.make .../depend
    • make -f CMakeFiles/$(target).dir/build.make .../build
  3. CMakeFiles/.DIR/build.make:文件級的依賴關係和規則:
    • depend:評估自定義命令(生成生成源文件),然後掃描源以獲取隱式依賴關係。
    • build:負載依賴掃描結果來自上一步驟。編譯和鏈接。