我想做一个宏来获取包含特定类型文件的子子目录列表,在我的例子中是 .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)
之类的操作吗?
答案 0 :(得分:1)
虽然if
命令支持许多现成检查,但并非所有检查都可以通过if
直接表达。但您可以自由使用其他命令,并通过if
检查其结果。
要检查给定目录是否包含特定类型的文件,可以有效地使用FILE(GLOB)
:
FILE(GLOB jars "${child}/*.jar")
if(jars)
# There are .jar files in directory referred by 'child'
endif()