macro(erl_target name) set(in_files "") set(out_files "") foreach(src ${ARGN}) list(APPEND in_files "${CMAKE_CURRENT_SOURCE_DIR}/${src}") string(REPLACE ".erl" ".beam" src ${src}) set(out_file "${CMAKE_CURRENT_BINARY_DIR}/${src}") list(APPEND out_files "${CMAKE_CURRENT_BINARY_DIR}/${src}") endforeach(src ${ARGN}) add_custom_command( OUTPUT ${out_files} COMMAND ${ERLC_EXECUTABLE} ARGS "-o" ${CMAKE_CURRENT_BINARY_DIR} ${in_files} DEPENDS ${in_files} ) add_custom_target( ${name} ALL DEPENDS ${out_files} ) endmacro(erl_target)