Skip to content

Instantly share code, notes, and snippets.

@xaedes
Created September 6, 2018 15:34
Show Gist options
  • Save xaedes/5f2f54468e14ede309e52d3feb7a613c to your computer and use it in GitHub Desktop.
Save xaedes/5f2f54468e14ede309e52d3feb7a613c to your computer and use it in GitHub Desktop.
generate dependency by trying different styles
function(generate_dependency TargetName Dependency)
if(TARGET ${Dependency})
# Dependency is proper cmake library
target_link_libraries(${TargetName} ${Dependency})
else()
# Dependency is just name of library
if(DEFINED ${Dependency}_LIBRARIES)
target_link_libraries(${TargetName} ${${Dependency}_LIBRARIES})
elseif(DEFINED ${Dependency}_LIBS)
target_link_libraries(${TargetName} ${${Dependency}_LIBS})
elseif(DEFINED ${Dependency}_LIBRARY)
target_link_libraries(${TargetName} ${${Dependency}_LIBRARY})
elseif(DEFINED ${Dependency}_LIB)
target_link_libraries(${TargetName} ${${Dependency}_LIB})
else()
target_link_libraries(${TargetName} ${Dependency})
endif()
if(DEFINED ${Dependency}_INCLUDE_DIRECTORIES)
target_include_directories(${TargetName} PUBLIC ${${Dependency}_INCLUDE_DIRECTORIES})
elseif(DEFINED ${Dependency}_INCLUDE_DIRS)
target_include_directories(${TargetName} PUBLIC ${${Dependency}_INCLUDE_DIRS})
elseif(DEFINED ${Dependency}_INCLUDE_DIRECTORY)
target_include_directories(${TargetName} PUBLIC ${${Dependency}_INCLUDE_DIRECTORY})
elseif(DEFINED ${Dependency}_INCLUDE_DIR)
target_include_directories(${TargetName} PUBLIC ${${Dependency}_INCLUDE_DIR})
else()
target_include_directories(${TargetName} PUBLIC $<TARGET_PROPERTY:${Dependency},INTERFACE_INCLUDE_DIRECTORIES>)
endif()
if(DEFINED ${Dependency}_EXPORTED_TARGETS)
add_dependencies(${TargetName} ${${Dependency}_EXPORTED_TARGETS})
endif()
endif()
endfunction()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment