macro(make_example name) file(GLOB SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${name}/*.cpp) add_executable(${name} ${SOURCES}) target_link_libraries(${name} yage) endmacro(make_example) macro(subdirlist 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() subdirlist(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR}) foreach(subdir ${SUBDIRS}) make_example(${subdir}) endforeach()