如何使用通配符在cmake中运行execute_process?

h6my8fg2  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(155)

下面是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}")
wztqucjr

wztqucjr1#

Filename expansionshell * 在执行命令之前 * 执行的扩展之一,它会导致*.txt使用特殊规则扩展到文件列表。
您必须运行shell以使*.txt展开。

COMMAND sh -c "ls *.txt"

使用file(GLOB tmp "*.txt")并传递tmp将是一种更类似于cmake-ish的方式。

相关问题