下面是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}")
1条答案
按热度按时间wztqucjr1#
Filename expansionshell * 在执行命令之前 * 执行的扩展之一,它会导致
*.txt
使用特殊规则扩展到文件列表。您必须运行shell以使
*.txt
展开。使用
file(GLOB tmp "*.txt")
并传递tmp
将是一种更类似于cmake-ish的方式。