Подтвердить что ты не робот

Удалить конкретный файл из сборки cmake

У меня есть проект, в котором у меня есть по существу два основных метода. Один для тестирования и один для, ну, код. Обычно вы должны создавать подмодули, но это не вариант.

file(GLOB sources "*.cpp")
file(GLOB headers "*.h")
add_executable(testing ${sources} ${headers})   
add_executable(main ${sources} ${headers})   

Таким образом, тестирование должно собирать все источники, кроме main.cpp. Main должен скомпилировать все, кроме test.cpp.

4b9b3361

Ответ 1

Нормальным способом, вероятно, будет создание библиотеки из всех источников, кроме main.cpp и testing.cpp, а затем привязать ее к каждому исполняемому файлу. Однако, я думаю, вы имеете в виду, что не можете этого сделать, когда говорите, что не можете создавать подмодули.

Вместо этого вы можете использовать list(REMOVE_ITEM ...):

file(GLOB sources "*.cpp")
file(GLOB headers "*.h")
set(testing_sources ${sources})
list(REMOVE_ITEM testing_sources ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp)
list(REMOVE_ITEM sources ${CMAKE_CURRENT_SOURCE_DIR}/testing.cpp)
add_executable(main ${sources} ${headers})
add_executable(testing ${testing_sources} ${headers})