2015-07-03 116 views
3

我在學習CMake,我在理解其多步驟工作流時遇到問題。到目前爲止,我的理解是你:CMake工作流程?

  • CMakeLists.txt
  • 運行cmake從一個子目錄生成構建文件(一個Makefile,在我的情況)
  • 運行make

但是,我不明白你應該如何處理不同的目標(Release vs Debug)。通過在兩個不同的子目錄中運行CMake?

此外,我不明白你爲什麼要編輯CMakeCache.txt(也有一個GUI工具)。通過傳遞不同的選項來模擬./configure將完成什麼?

回答

5

你說得很對。 write CMakeLists.txt>cmake>make順序是正確的。關於不同的配置(調試與發佈),您必須區分多配置生成器(Visual Studio,XCode)和單配置生成器(其他所有器件)。使用多配置生成器,您可以生成一個包含所有配置的生成系統(例如解決方案文件),並且可以在生成時進行選擇。

對於單一配置生成器,通過生成不同的構建系統,即通過在不同目錄中運行CMake多次(並使用不同的CMake變量值),可以獲得不同的配置。

所以,你會做這樣的事情:

> cd my_project/bld/debug 
> cmake ../../src -DCMAKE_BUILD_TYPE=Debug 
> cd ../release 
> cmake ../../src -DCMAKE_BUILD_TYPE=Release 

關於編輯緩存(通常是通過CMake的GUI或ccmake):你是對的一次,這在很大程度上與傳遞選項./configure來自AutoMake世界。這將是一個新下載項目的典型工作流程(使用CMake的GUI):你想

    1. 運行CMake的GUI,它指向源目錄(輸入)和二進制目錄(輸出)配置。這將填充緩存項目指定的默認值。如果CMake無法自動找到項目的某些依賴關係,則會以錯誤結束。
    2. 檢查緩存,改變自己不喜歡的任何值(如編譯選項),在任何缺少的選項填寫(路徑庫CMake的找不到等)
    3. 重複步驟2 & 3至您對該項目的設置感到滿意。
    4. 生成構建系統。
    5. 使用適當的構建工具退出CMake GUI和構建
  • +0

    現在一切都很清楚。謝謝。 – Elena

    +1

    當然你也可以通過選項來CMake的配置步驟,而不是在cmake的桂設置它們的:'cmake的... -DWITH_SQLITE = ON ...' –

    +0

    您可以使用同一個build目錄調試,如果釋放CONFIGS您建立系統可以信任不接受對發佈生成調試的目標文件,並重新生成。否則,你可以用'--build的CMake ... --clean-first' –