2014-09-19 178 views
9

我閱讀文檔。什麼是CMake生成器?

它說:

A CMake Generator is responsible for writing the input files for a native build system. 

究竟是什麼意思呢?

如果我的項目中有一組C++文件,這些是輸入文件嗎?

如果我使用的是Linux,默認情況下我的本機構建系統是什麼? Make

爲什麼輸入文件必須由發電機是written如果他們已經存在?

回答

12

什麼是發電機?

要了解發生器是什麼,我們需要先了解一下什麼是構建系統。 CMake不編譯或鏈接任何源文件。它使用生成器爲構建系統創建配置文件。構建系統使用這些文件來編譯和鏈接源代碼文件。

那麼什麼是構建系統?

構建系統是一個廣泛的術語,它將用於一般編譯和鏈接源代碼的工具集合在一起,但它也可以包含構建過程中使用的輔助工具。

例如,在多階段構建系統中,可能會構建一個可執行文件以用於另一個構建的構建過程。

根據系統所使用的工具鏈,CMake的會生成多個文件和文件夾,以便在的CMakeLists.txt引用和支持.cmake文件的源文件的建設。

有時可以在計算機上安裝多個構建系統,就像Windows一樣,您可以使用Visual Studio和MinGW構建系統。 CMake允許你指定這些構建系統是否爲其生成配置文件。

CMake包括多個Command-Line,IDEExtra發電機。

命令行編譯工具發電機

這些發電機都是命令行構建工具,如Make和忍者。選擇的工具鏈必須在使用CMake生成構建系統之前進行配置。

下面的支持(**):

  • Borland的生成文件
  • MSYS生成文件
  • MinGW的生成文件
  • NMAKE生成文件
  • NMAKE生成文件JOM
  • 的Unix Makefiles
  • WATCOM WMake

IDE生成工具發電機

這些發電機是集成開發環境,其中包括自己的編譯器。例子是Visual Studio和Xcode,它本身包含一個編譯器。

上支持以下(**):

  • 的Visual Studio 6
  • 的Visual Studio 7
  • 的Visual Studio 7 .NET 2003
  • 的Visual Studio 8 2005
  • 的Visual Studio 9 2008
  • Visual Studio 10 2010
  • Visual Studio 11 2012
  • 的Visual Studio 12 2013
  • 的Visual Studio 14 2015年
  • 的Visual Studio 15 2017年
  • 青山多
  • 的Xcode

額外發電機

這些發電機創建配置以使用替代IDE工具,並且必須包含在IDE或Com中曼線發電機。

上支持以下(**):

  • 碼塊
  • CodeLite
  • 的Eclipse CDT4
  • KDevelop3
  • 凱特
  • 崇高文本2

如果我的項目中有一組C++文件,這些是輸入文件嗎?

是的,他們是一些的輸入文件。對於make build系統,你也有一個MakeFile。對於Visual Studio,您有一個解決方案文件(.sln)。在這兩個系統中,都需要額外的文件,CMake知道如何創建一個合適的CMakeLists.txt文件。

如果我使用的是Linux,默認情況下我的本機構建系統是什麼?使?

一般來說,是的,但其他構建系統可以像忍者一樣設置。

爲什麼輸入文件必須由生成器寫入,如果它們已經存在?

某些源文件可能已經存在,但CMake有能力生成頭文件和源文件。同樣如上所述,必須生成依賴於CMakeLists.txt文件中提供的源文件的配置文件。根據CMake版本3.9的documentation

0

據我所知,在Unix上標準的本地構建系統是「GNU使(gmake命令)」,被稱爲「使」。 谷歌傢伙還發布了一個名爲「忍者」的不同工具。

2

CMake Generator負責編寫 本機構建系統的輸入文件。

意味着當沒有指定生成器時,CMake爲本機構建系統準備構建腳本。在Linux中,默認的編譯系統是Make,它的輸入文件是makefiles,然後解釋並相應地執行編譯。在第一次執行CMake構建腳本之前,不存在。

C++源文件(或任何其他源文件)不是輸入文件到構建系統。構建系統腳本指定如何處理源文件以生成二進制可執行文件。