萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> CMake安裝使用教程

CMake安裝使用教程

   CMake是一個比make更高級的編譯配置工具,它可以根據不同平台、不同的編譯器,生成相應的Makefile或者vcproj項目。

  通過編寫CMakeLists.txt,可以控制生成的Makefile,從而控制編譯過程。CMake自動生成的Makefile不僅可以通過make命令構建項目生成目標文件,還支持安裝(make install)、測試安裝的程序是否能正確執行(make test,或者ctest)、生成當前平台的安裝包(make package)、生成源碼包(make package_source)、產生Dashboard顯示數據並上傳等高級功能,只要在CMakeLists.txt中簡單配置,就可以完成很多復雜的功能,包括寫測試用例。

  如果有嵌套目錄,子目錄下可以有自己的CMakeLists.txt。

  總之,CMake是一個非常強大的編譯自動配置工具,支持各種平台,KDE也是用它編譯的,感興趣的可以試用一下。

  准備活動:

  (1)安裝cmake。

  (2)運行cmake的方法。(GUI、命令行)

  
       CMake使用步驟:

  運行GUI的cmake界面:

  cmake-2.8.1-win32-x86bincmake-gui.exe

CMake安裝使用教程 三聯

  執行Configure:

  運行之後,生成了如下文件:

  生成Makefile:

  執行Generate之後生成如下文件:

  運行make進行編譯:

  編譯完成後,在build目錄生成Tutorial.exe,運行Tutorial.exe 25就可以看到運行結果:

  運行make install安裝程序:

  運行make test進行測試:

  通過cmake tutorial學習CMake配置方法 http://www.cmake.org/cmake/help/cmake_tutorial.html

  可以在源代碼的Tests/Turorial目錄中找到這個手冊對應的代碼。

  1、Step1。

  (如果不知道如何使用cmake,以及如何使用編譯產生的Turorial.exe,可先看下前面“CMake使用步驟”的說明,它以Step4為例詳細介紹了使用過程,Step1的配置可能不夠完全,比如無法運行make install,無法運行make test,但可以參考。)

  簡單的程序編譯。

  (1)運行GUI的cmake,指定要編譯的源代碼路徑和二進制文件路徑(會自動創建)。

  (2)點擊Configure,配置成功後,再點擊Generate。

  配置需要選擇合適的編譯器,雖然我安裝了VC2008,但沒有配置成功;選擇Unix Makefiles,配置成功,它自動找到了DevC++下的gcc.exe等編譯器。

  (3)在build3目錄執行make,就能夠編譯生成Turorial.exe了。

  D:ProjectsLabtestngppcmake-2.8.1TestsTutorialStep1build3>makeLinking CXX executable Tutorial.exe

  [100%] Built target Tutorial

  可以運行一下Turorial.exe:

  D:ProjectsLabtestngppcmake-2.8.1TestsTutorialStep1build3>Tutorial.exe

  Tutorial.exe Version 1.0

  Usage: Tutorial.exe number

  D:ProjectsLabtestngppcmake-2.8.1TestsTutorialStep1build3>Tutorial.exe 4

  The square root of 4 is 2

  2、Step2 把子目錄編譯為庫,並且鏈接到最終的可執行文件。

  include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions")

  add_subdirectory (MathFunctions) # 使得子目錄MathFunctions也能被編譯

  # add the executable

  add_executable (Tutorial tutorial.cxx)

  target_link_libraries (Tutorial MathFunctions)

  產生makefile:

  在GUI上點擊Configure,之後Generate還是灰色,再次點擊Configure,Generate就可以點擊了。

  編譯:

  在build目錄運行make,即可開始編譯,但是開始會報告sh.exe運行異常,應該是Tools下的UnxUtils的sh.exe與Win7不兼容,發現有如下make文件,估計是它導致的,於是把它重命名,不使用UnxUtils下的make,就OK樂。

  D:ToolsCMDUnxUtilsusrlocalwbinmake.exe

  編譯過程:

  D:ProjectsLabtestngppcmake-2.8.1TestsTutorialStep2build>make

  [ 50%] Building CXX object MathFunctions/CMakeFiles/MathFunctions.dir/mysqrt.cxx

  .obj

  Linking CXX static library libMathFunctions.a

  [ 50%] Built target MathFunctions

  Linking CXX executable Tutorial.exe

  [100%] Built target Tutorial

  3、Step3

  支持make install把程序安裝到系統指定目錄,並且運行一些測試檢查它是否能夠正常工作。

  a、安裝時使用的基礎目錄,由CMAKE_INSTALL_PREFIX指定。

  b、可以通過一個很簡單的用例檢查程序是否運行起來,沒有出現異常。(TurotialRuns只是一個用例名字)

  add_test (TutorialRuns Tutorial 25)

  c、macro方式進行多組數據的測試是非常簡潔方便的。

  #define a macro to simplify adding tests, then use it

  macro (do_test arg result)

  add_test (TutorialComp${arg} Tutorial ${arg})

  set_tests_properties (TutorialComp${arg}

  PROPERTIES PASS_REGULAR_EXPRESSION ${result})

  endmacro (do_test)

  # do a bunch of result based tests

  do_test (25 "25 is 5")

  do_test (-25 "-25 is 0")

  執行make install:

  D:ProjectsLabtestngppcmake-2.8.1TestsTutorialStep3build>make install

  [ 50%] "Built target MathFunctions"

  [100%] "Built target Tutorial"

  Install the project...

  -- Install configuration: ""

  -- Installing: C:/Program Files/Tutorial/bin/Tutorial.exe

  -- Installing: C:/Program Files/Tutorial/include/TutorialConfig.h

  -- Installing: C:/Program Files/Tutorial/bin/libMathFunctions.a

  -- Installing: C:/Program Files/Tutorial/include/MathFunctions.h

  安裝結果: C:Program FilesTutorial>tree /f

  C:.

  ├─bin

  │ libMathFunctions.a

  │ Tutorial.exe

  │

  └─include

  MathFunctions.h

  TutorialConfig.h

  執行make test:

  D:ProjectsLabtestngppcmake-2.8.1TestsTutorialStep3build>make test

  Running tests...

  Test project D:/Projects/Lab/testngpp/cmake-2.8.1/Tests/Tutorial/Step3/build

  Start 1: TutorialRuns

  1/5 Test #1: TutorialRuns ..................... Passed 0.01 sec

  Start 2: TutorialComp25

  2/5 Test #2: TutorialComp25 ................... Passed 0.01 sec

  Start 3: TutorialNegative

  3/5 Test #3: TutorialNegative ................. Passed 0.01 sec

  Start 4: TutorialSmall

  4/5 Test #4: TutorialSmall .................... Passed 0.00 sec

  Start 5: TutorialUsage

  5/5 T

copyright © 萬盛學電腦網 all rights reserved