[CMake] Feature Request: FILE (GLOB files "*.c" EXCEPT main.c test.c)

Tristan Carel tristan.carel at gmail.com
Tue Aug 14 08:10:43 EDT 2007


On 8/14/07, Martin Lutken <mlu at danware.dk> wrote:
> It seems to me that many existing SW libraries, which it would be nice to have
> converted to cmake, cannot too easily make use of the fileglobbing since
> quite often, there are a few files which you don't want to compile in order
> to produce the library.
>
> So a syntax like :
> FILE (GLOB files "*.c" EXCEPT main.c test.c)
> or
> FILE (GLOB files "*.c" EXCLUDE main.c test.c)

With the classic GLOB search, it is trivial to remove items from the
result list:
LIST(REMOVE_ITEM files
  ${CMAKE_CURRENT_SOURCE_DIR}/main.c
  ${CMAKE_CURRENT_SOURCE_DIR}/test.c)

With the GLOB_RECURSE command, it is more tricky. But you can filter
items by using regular expressions:

FILE(GLOB_RECURSE files "*.c")
FOREACH(item ${files})
  IF(${item} MATCHES "foo/main.c")
    LIST(REMOVE_ITEM files ${item})
  ENDIF(${item} MATCHES "foo/main.c")
ENDFOREACH(item)
MESSAGE(STATUS "${files}")

-- 
Tristan Carel
Music with dinner is an insult both to the cook and the violinist.


More information about the CMake mailing list