Linux 如何在CMake execute_过程中使用find-exec?
我使用CMakeLinux 如何在CMake execute_过程中使用find-exec?,linux,find,installation,cmake,exec,Linux,Find,Installation,Cmake,Exec,我使用CMakeinstall(目录…表单在安装时复制标题: install(DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h") 但是,此命令(未找到标题的命令)。因此,我希望在安装过程中查找并删除这些空目录: install(CODE "execute_process( COMMAND find -type d -empty -exec rmdir '{
install(目录…
表单在安装时复制标题:
install(DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}
DESTINATION include
FILES_MATCHING PATTERN "*.h")
但是,此命令(未找到标题的命令)。因此,我希望在安装过程中查找并删除这些空目录:
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\u empty\u dirs.err
包含:
find: missing argument to `-exec'
我试图摆脱牙套,但它产生了同样的行为。我做错了什么?谢谢,我找到了解决办法。它不是“{}”,而是“授权”;”。以下语法适用于我(CMake 2.8.9):
你在工作中有一个输入错误。\u direcotirthreak@ixSci我修正了它;然而,打字错误是在问题中,而不是在我的脚本中!您是否在不使用“”或使用双精度“”的情况下尝试此命令<代码>-exec rmdir{}代码>或使用
-exec rmdir'{}'';''
或-exec\“rmdir{}\”
@ixSci我尝试了引用您建议的可能方式,但它们都给出了相同的失败:-/但是,它确实通过执行bash
来实现我的目标,并将find
命令作为-c
的参数;谢谢你的帮助,我建议你不要一开始就创建文件夹,以后再删除它们。你可以用文件(GLOB)来完成这项工作-获取你需要的所有文件,然后测试输出是否包含任何内容,如果不包含,则只需不执行安装(目录)在审阅队列中遇到此问题,看起来很危险,但我需要了解更多关于cmake的信息。你能再解释一下吗?看来解决办法是逃避调用install()
code中的find
命令时,不使用引号将其括起来(否则字符串将被截断)。
--exec rm {} "\;"