João Cartucho
João Cartucho

Reputation: 3916

CMake - Check if a directory contains a file of a specific type

I want to do a Macro that gets a list of the sub-sub-directories that contain a specific type of files, in my case .jar files.

This macro is getting me all the sub-sub-directories:

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})

What I now need is to find a way to check if a directory contains any .jar file.

Can I change the IF to do something like IF(child ${children} AND ${child} CONTAINS *.jar)?

Upvotes: 0

Views: 1315

Answers (1)

Tsyvarev
Tsyvarev

Reputation: 66088

While if command supports many ready-made checks, not all checks can be expressed directly via if. But you are free to use other commands, and check their result via if.

For check whether given directory contains specific type of files, FILE(GLOB) can be effectively used:

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

Upvotes: 1

Related Questions