Да, сделав ваш фреймворк отдельной библиотекой. Как и сейчас, вы указываете framework_SRCS в качестве источников для исполняемого файла проекта, а затем также указываете те же источники для исполняемого файла тестового бегуна. А CMake просто создает оба исполняемых файла из указанных источников.
Еще хуже, CMake не может легко предположить, что один и тот же исходный файл будет использоваться одинаково для обоих исполняемых файлов. Что если у вас есть несколько разных флагов компиляции между вашим тестом и вашим приложением?
Самый простой подход - связать ваш framework_SRCS с библиотекой, а затем указать зависимость от ссылки:
ADD_LIBRARY( MyFramework STATIC ${framework_SRCS} )
ADD_EXECUTABLE(${CMAKE_PROJECT_NAME}
${game_SRC})
TARGET_LINK_LIBRARIES( ${CMAKE_PROJECT_NAME} MyFramework )
# --- Testing ---
ENABLE_TESTING()
AUX_SOURCE_DIRECTORY(${TEST_DIR} test_SRC)
ADD_EXECUTABLE(${TEST_RUNNER_NAME}
${test_SRC}
TARGET_LINK_LIBRARIES( ${TEST_RUNNER_NAME} MyFramework )
(Обратите внимание, что я явно выбрал статическую сборку библиотеки. Конечно, вы можете оставить ее на усмотрение cmake или использовать общую сборку)
С уважением, Андре