2013-03-23 69 views
1

我正在編寫一個腳本,並開始使用install命令(用於複製文件),它不起作用。 CMake configure/generate不會顯示任何錯誤(即它不會停止,也不會顯示與此命令相關的警告/錯誤),並且該命令似乎不工作,因爲我沒有看到任何正在複製的文件。當CMake命令失敗時,有沒有辦法獲得錯誤?

因爲我是新的,我想知道:

  • 我怎麼能告訴install失敗(也許是源目錄是錯誤的,或者在目標目錄是錯的)?它似乎失敗默默
  • 有錯誤代碼,我可以檢查看看出了什麼問題?
  • Ans最後是在什麼時候叫install?當我點擊配置?或者當項目建成時?

我在Windows上。

回答

1

當您將一個install命令添加到您的CMakeLists.txt時,您會得到一個名爲「install」的新目標。

爲了實際安裝所選文件/目標,您需要構建此安裝目標。它不會自動構建爲「ALL」目標的一部分。例如,如果您使用的是Visual Studio,則「解決方案資源管理器」的「CMakePredefinedTargets」文件夾中將出現「INSTALL」目標。只需選擇該目標並構建它,將導致解決方案被構建並安裝選定的項目。

如果構建或安裝過程的任何部分失敗,則通知應該很明顯。

+0

這樣做很有意義。要麼我看起來不夠努力,要麼文檔在描述這些細節方面做得不好。 – Samaursa 2013-03-24 01:07:54

+1

[本教程](http://www.cmake.org/cmake/help/cmake_tutorial.html#s3)可能有所幫助? – Fraser 2013-03-24 02:19:18

+0

它的確如此!謝謝! – Samaursa 2013-03-24 15:51:11

1

對一般問題,有許多的方法可以從CMake的獲得更詳細的輸出 - 我只是學到了第三個用於粗糙的錯誤:

  1. 調試CMake的食譜,我喜歡用郵件命令你甚至可以迭代目錄和發送消息*
    • eg message(STATUS "SQLITE3_LIB: ${SQLITE3_LIB} SQLITE3_PATH: ${SQLITE3_PATH}") # prints SQLITE3_LIB and SQLITE3_PATH variables
  2. 進行詳細的建立解決您的構建本身
    • 運行make VERBOSE=1(用make,ninja -v與忍者等。),以幫助您解決過程中,如cmake -DYOUR_OPTION="insert values" ~/path/to/files/ && make VERBOSE=1
  3. 如果你發現一個不可思議的錯誤,我剛剛得知,我們可以運行在失敗的命令strace的 - 這可能是一個有點勢不可擋,但可以幫助你的時候已經用盡了#1和#2
    • 我只是用strace /usr/bin/cmake -E copy_directory $MY_SOURCE_PATH $MY_DEST_PATH,試圖理解爲什麼一個副本失敗

*我已經使用DLRdave's answer到一個不同的問題,打印出日e INCLUDE_DIRS:

get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) 
foreach(dir ${dirs}) 
    message(STATUS "dir='${dir}'") 
endforeach() 
相關問題