CMake - 检查目录是否包含特定类型的文件

时间:2017-06-23 21:44:36

标签: cmake

我想做一个宏来获取包含特定类型文件的子子目录列表,在我的例子中是 .jar 文件。

这个宏给了我所有的子子目录:

MACRO(SUBSUBDIRLIST result curdir)
  FILE(GLOB children RELATIVE ${curdir} ${curdir}/*/*)
  SET(dirlist "")
  FOREACH(child ${children})
    IF(IS_DIRECTORY ${curdir}/${child})
      LIST(APPEND dirlist ${child})
    ENDIF()
  ENDFOREACH()
  SET(${result} ${dirlist})
ENDMACRO()

SUBSUBDIRLIST(TUTORIALS ${CMAKE_CURRENT_SOURCE_DIR})

我现在需要找到一种方法来检查目录是否包含任何 .jar 文件。

我可以更改 IF 来执行IF(child ${children} AND ${child} CONTAINS *.jar)之类的操作吗?

1 个答案:

答案 0 :(得分:1)

虽然if命令支持许多现成检查,但并非所有检查都可以通过if直接表达。但您可以自由使用其他命令,并通过if检查其结果。

要检查给定目录是否包含特定类型的文件,可以有效地使用FILE(GLOB)

FILE(GLOB jars "${child}/*.jar")
if(jars)
    # There are .jar files in directory referred by 'child'
endif()