Skip to content

Commit b2119a7

Browse files
committed
cmake: Explicitly specify generators that support Coverage functionality
Only the "Ninja Multi-Config" generator supports an `EXCLUDE_FROM_ALL` target property value that varies by configuration.
1 parent 78ef6a7 commit b2119a7

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

CMakeLists.txt

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -156,20 +156,27 @@ else()
156156
endif()
157157

158158
# Define custom "Coverage" build type.
159-
set(CMAKE_C_FLAGS_COVERAGE "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O0 -DCOVERAGE=1 --coverage" CACHE STRING
160-
"Flags used by the C compiler during \"Coverage\" builds."
161-
)
162-
set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} --coverage" CACHE STRING
163-
"Flags used for linking binaries during \"Coverage\" builds."
164-
)
165-
set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} --coverage" CACHE STRING
166-
"Flags used by the shared libraries linker during \"Coverage\" builds."
167-
)
168-
mark_as_advanced(
169-
CMAKE_C_FLAGS_COVERAGE
170-
CMAKE_EXE_LINKER_FLAGS_COVERAGE
171-
CMAKE_SHARED_LINKER_FLAGS_COVERAGE
172-
)
159+
# The list of default build targets depends on whether they are being built for coverage.
160+
# This functionality is limited to generators that support it.
161+
if(CMAKE_GENERATOR MATCHES "Make|Ninja")
162+
set(CMAKE_C_FLAGS_COVERAGE "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O0 -DCOVERAGE=1 --coverage" CACHE STRING
163+
"Flags used by the C compiler during \"Coverage\" builds."
164+
)
165+
set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} --coverage" CACHE STRING
166+
"Flags used for linking binaries during \"Coverage\" builds."
167+
)
168+
set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} --coverage" CACHE STRING
169+
"Flags used by the shared libraries linker during \"Coverage\" builds."
170+
)
171+
if(CMAKE_GENERATOR STREQUAL "Ninja Multi-Config")
172+
list(APPEND CMAKE_CONFIGURATION_TYPES "Coverage")
173+
endif()
174+
mark_as_advanced(
175+
CMAKE_C_FLAGS_COVERAGE
176+
CMAKE_EXE_LINKER_FLAGS_COVERAGE
177+
CMAKE_SHARED_LINKER_FLAGS_COVERAGE
178+
)
179+
endif()
173180

174181
get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
175182
if(PROJECT_IS_TOP_LEVEL)

0 commit comments

Comments
 (0)