2016-03-02 71 views
1

我準備應該有和沒有工作的GUI應用程序,所以我在的CMakeLists.txt使用命令什麼會導致CMake選項不起作用?

option (NEED_GUI "Include Qt support" OFF) 

if (NEED_GUI) 
    message("****GUI should be OFF****") 
    add_subdirectory(QtGUI) # The Qt-based graphics routines 
endif (NEED_GUI) 

儘管我關設置選項,我收到消息和庫建立。在哪裏尋找錯誤?

+3

選項是緩存變量,所以無論你給只是一個初始值(更多細節見[這裏](http://stackoverflow.com/questions/31037882/whats-the-cmake-syntax-to-set - 和使用的變量))。 – Florian

+1

@弗洛裏安:你應該將其作爲答案。 – DevSolar

回答

4

談到我的意見爲答案

您的代碼看起來不錯。所以我假設這裏的問題是option()確實會將初始配置步驟中給出的值傳輸到您的CMakeCache.txt中。之後,您只能通過修改緩存條目NEED_GUI來更改它。在生成構建環境後更改CMakeLists.txt中的選項不會再更新緩存。

參考

+0

我沒有想過類似的緩存,因爲我使用乾淨的所有技巧(http://stackoverflow.com/questions/9680420/looking-for-a-cmake-clean-command-to-clear-up-cmake-輸出),我猜它也清理緩存。 – katang

1
if (NEED_GUI MATCHES ON) 

是適當的使用,而不是

if (NEED_GUI) 
相關問題