如何在CMake execute_process中使用find -exec?

时间:2013-02-22 09:30:12

标签: linux find install cmake exec

我使用CMake install(DIRECTORIES...)表单在安装时复制标题:

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'

我试图逃避大括号,但它会产生相同的行为。我究竟做错了什么?谢谢,

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。它不是" {}"而不是删除";"。以下语法适用于我(CMake 2.8.9):

--exec rm {} "\;"