¿Agregar automáticamente todos los archivos en una carpeta a un destino usando CMake?

Estoy considerando cambiar un proyecto multiplataforma desde sistemas de administración de comstackción separados en Visual C ++, XCode y makefiles a CMake.

Una característica esencial que necesito es agregar automáticamente todos los archivos en un directorio a un objective. Si bien esto es fácil de hacer con make, no es factible con Visual C ++ y XCode (corríjanme si estoy equivocado). ¿Es posible hacerlo directamente en CMake? ¿Cómo?

Siéntase libre de agregar cualquier otra cosa que deba conocer antes de ir a aprender CMake, considerando que actualmente el proyecto es de tamaño medio (8 bibliotecas, 2 ejecutables, 8 proyectos de prueba y depende de alrededor de 8 bibliotecas externas).

Es posible. Por ejemplo, con el file(GLOB :

 cmake_minimum_required(VERSION 2.8) file(GLOB helloworld_SRC "*.h" "*.cpp" ) add_executable(helloworld ${helloworld_SRC}) 

Tenga en cuenta que esto requiere la ejecución manual de cmake si se agrega o elimina un archivo de origen, ya que el sistema de comstackción generado no sabe cuándo solicitar la regeneración de CMake, y hacerlo en cada comstackción boostía el tiempo de comstackción.

La respuesta de Kleist ciertamente funciona, pero hay una advertencia importante:

Cuando escribe un Makefile manualmente, puede generar una variable SRCS usando una función para seleccionar todos los archivos .cpp y .h . Si un archivo fuente se agrega más tarde, volver a ejecutar make lo incluirá.

Sin embargo, CMake (con un comando como file(GLOB ...) ) generará explícitamente una lista de archivos y la colocará en el Makefile autogenerado. Si tiene un nuevo archivo fuente, deberá volver a generar el Makefile volviendo a ejecutar cmake .

editar: no es necesario eliminar el archivo Makefile.