2013-02-22 69 views
1

我使用的CMake install(DIRECTORIES...)表單上安裝複製標題:如何在CMake execute_process中使用find -exec?

install(DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} 
    DESTINATION include 
    FILES_MATCHING PATTERN "*.h") 

但是,此命令does create empty directories(那些沒有標題被發現)。因此,我希望找到並在安裝過程中刪除那些空目錄:

install(CODE "execute_process(
    COMMAND find -type d -empty -exec rmdir '{}' ';' 
    WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX} 
    ERROR_FILE ${CMAKE_CURRENT_BINARY_DIR}/prune_empty_dirs.err)") 

通過上面的命令,文件prune_empty_dirs.err包含:

find: missing argument to `-exec' 

我試圖逃跑括號,但它產生的同樣的行爲。我究竟做錯了什麼?謝謝,

+0

您在WORKING_DIREC有一個錯字** ** OTIR感謝 – ixSci 2013-02-22 09:44:35

+0

我@ixSci固定它;然而,錯字不在我的腳本中! – piwi 2013-02-22 09:48:39

+1

你是否嘗試過這個命令沒有''或雙''? '-exec rmdir {};''或用'-exec rmdir''{}'''';'''或'-exec \「rmdir {}; \」' – ixSci 2013-02-22 09:51:35

回答

0

我找到了解決方案。它不是「{}」,而不是「;」。以下語法爲我工作(CMake的2.8.9):

--exec rm {} "\;" 
+0

在審閱隊列中遇到此問題,看起來很危險,但我需要詳細瞭解cmake。你能再解釋一下嗎? – 2014-10-15 16:57:02

+0

似乎解決方法是在''install()'代碼內調用'find'命令時(不是該字符串被截斷),而是不用引號括起';'。 – piwi 2014-10-16 07:45:27