Помните, что это макрос, поэтому символы перед заменой заменяются. Это означает, что символы, которые являются пустыми строками, будут заменены на ничто перед оценкой. Таким образом, если WTDBO_SOVERSION равен "", то
SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION ${WTDBO_SOVERSION})
станет
SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION)
, и это вызовет ошибку. Если для вашей цели допустимы пустые строки, заключите символ в кавычки. например,
SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION "${WTDBO_SOVERSION}")