Я на самом деле не использовал CMake, так что, возможно, есть лучший способ, но, насколько я знаю, вы можете просто указать путь ко всем исходным файлам.
например:
add_executable (myProgram main.cpp subdir1/foo.cpp subdir2/bla.cpp)
Я полагаю, вы могли бы использовать глобализацию файлов, чтобы получить *.cpp
в каждом подкаталоге, чтобы уменьшить количество набираемых текстов.
См. это сообщение списка рассылки для получения информации о перемещении файлов в CMake.