【发布时间】:2013-02-22 09:30:11
【问题描述】:
我使用 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'
我试图摆脱大括号,但它产生了相同的行为。我究竟做错了什么?谢谢,
【问题讨论】:
-
您在 WORKING_DIREC 中有错字OTIR
-
谢谢@ixSci 我修好了;但是错字不在我的脚本中!
-
您是否尝试过不带 '' 或带双 '' 的命令?
-exec rmdir {} ;或-exec rmdir ''{}'' '';''或-exec \"rmdir {} ;\" -
@ixSci 我尝试了引用您建议的可能方式,但它们都给出了相同的失败:-/ 但是,它确实可以通过执行
bash和find来完成我所寻求的命令作为-c的参数;感谢您的帮助 -
我建议您首先不要创建文件夹,而不要稍后删除它们。您可以使用 FILE(GLOB) 来执行此操作 - 获取所需的所有文件,然后测试输出是否包含任何内容,如果不包含则不执行 INSTALL(DIRECTORIES)
标签: linux find installation cmake exec