У меня есть проект, в котором у меня есть по существу два основных метода. Один для тестирования и один для, ну, код. Обычно вы должны создавать подмодули, но это не вариант.
file(GLOB sources "*.cpp")
file(GLOB headers "*.h")
add_executable(testing ${sources} ${headers})
add_executable(main ${sources} ${headers})
Таким образом, тестирование должно собирать все источники, кроме main.cpp. Main должен скомпилировать все, кроме test.cpp.