如何解决如何使用通配符在cmake中运行execute_process?
下面是CMakeLists.txt文件,该文件尝试使用通配符*.txt
执行终端命令。当前它给出错误ls: cannot access '*.txt': No such file or directory
。但是,当我尝试不使用通配符运行时,它会按预期运行,即它将列出当前目录中的文件。
我可以在execute_process中使用通配符吗?
cmake_minimum_required(VERSION 3.8)
project(foo)
execute_process(COMMAND ls *.txt
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE result
OUTPUT_VARIABLE curr_out
ERROR_VARIABLE curr_out
)
message(STATUS "${result} : ${curr_out}")
解决方法
首先,您应该了解filename expansion由shell完成的扩展之一,在命令执行前,它们使*.txt
扩展到列表使用特殊规则的文件。
知道了这些之后,您自然就会知道必须运行外壳程序才能使*.txt
扩展。
COMMAND sh -c "ls *.txt"
使用file(GLOB tmp "*.txt")
并传递tmp
会更加虚假。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。