Насколько я знаю, cmake не позволяет исключать некоторые файлы в зависимости от конфигурации.Таким образом, вам нужно обойти это поведение.
Например, вы можете обернуть все содержимое b.cpp
и c.cpp
некоторым защитным макросом:
#ifdef BUILD_ME
//original content of your file
#endif
и следующим наборомспецифичные для конфигурации определения компилятора в cmake:
if (${CMAKE_GENERATOR} MATCHES "Make" AND "${CMAKE_BUILD_TYPE}" STREQUAL "")
# This block might be needed because CMAKE_BUILD_TYPE is usually
# undefined for makefiles.
# And COMPILE_DEFINITIONS_RELEASE are not chosen by default.
set(CMAKE_BUILD_TYPE RELEASE)
endif()
set_source_files_properties(b.cpp PROPERTIES COMPILE_DEFINITIONS_DEBUG BUILD_ME )
set_source_files_properties(c.cpp PROPERTIES COMPILE_DEFINITIONS_RELEASE BUILD_ME )
add_executable(target_name a.cpp b.cpp c.cpp)