@@ -152,7 +152,14 @@ endif ()
152152
153153# add library to be created, set libs to link against, set version and C++ standard
154154if (META_HEADER_ONLY_LIB)
155- add_library (${META_TARGET_NAME} INTERFACE )
155+ if (TARGET "${META_TARGET_NAME} " )
156+ get_target_property (SET_TARGET_NAME ${META_TARGET_NAME} TYPE )
157+ if (NOT SET_TARGET_NAME STREQUAL "INTERFACE_LIBRARY" )
158+ message (FATAL_ERROR "Library ${META_TARGET_NAME} has mismatching type ${SET_TARGET_NAME} ." )
159+ endif ()
160+ else ()
161+ add_library (${META_TARGET_NAME} INTERFACE )
162+ endif ()
156163 target_link_libraries (${META_TARGET_NAME} INTERFACE ${META_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES} "
157164 "${PRIVATE_LIBRARIES} " )
158165 target_include_directories (
@@ -164,7 +171,15 @@ if (META_HEADER_ONLY_LIB)
164171 target_compile_options (${META_TARGET_NAME} INTERFACE "${META_PUBLIC_COMPILE_OPTIONS} " "${META_PRIVATE_COMPILE_OPTIONS} " )
165172 set_target_properties (${META_TARGET_NAME} PROPERTIES EXPORT_COMPILE_COMMANDS "${ENABLE_EXPORT_COMPILE_COMMANDS} " )
166173else ()
167- add_library (${META_TARGET_NAME} ${META_LIBRARY_TYPE} ${ALL_FILES} )
174+ if (TARGET "${META_TARGET_NAME} " )
175+ get_target_property (SET_TARGET_NAME ${META_TARGET_NAME} TYPE )
176+ if (NOT SET_TARGET_NAME STREQUAL "${META_LIBRARY_TYPE} _LIBRARY" )
177+ message (FATAL_ERROR "Library ${META_TARGET_NAME} has mismatching type ${SET_TARGET_NAME} ." )
178+ endif ()
179+ target_sources (${META_TARGET_NAME} PRIVATE ${ALL_FILES} )
180+ else ()
181+ add_library (${META_TARGET_NAME} ${META_LIBRARY_TYPE} ${ALL_FILES} )
182+ endif ()
168183 target_link_libraries (
169184 ${META_TARGET_NAME}
170185 PUBLIC ${META_ADDITIONAL_LINK_FLAGS} "${PUBLIC_LIBRARIES} "
@@ -230,7 +245,14 @@ else ()
230245
231246 # add target for pulling only headers because some libraries contain header-only parts which are useful on their own
232247 if (NOT META_PLUGIN_CATEGORY)
233- add_library (${META_TARGET_NAME} -headers INTERFACE )
248+ if (TARGET "${META_TARGET_NAME} -headers" )
249+ get_target_property (SET_TARGET_NAME "${META_TARGET_NAME} -headers" TYPE )
250+ if (NOT SET_TARGET_NAME STREQUAL "INTERFACE_LIBRARY" )
251+ message (FATAL_ERROR "Library ${META_TARGET_NAME} -headers has mismatching type ${SET_TARGET_NAME} ." )
252+ endif ()
253+ else ()
254+ add_library (${META_TARGET_NAME} -headers INTERFACE )
255+ endif ()
234256 target_include_directories (
235257 ${META_TARGET_NAME} -headers
236258 INTERFACE $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE} >
0 commit comments