Advertisement
Guest User

Untitled

a guest
Nov 5th, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 1.49 KB | None | 0 0
  1. ################################################################################
  2. # Add link directory
  3. #     target_link_directories(<target> <PRIVATE|PUBLIC|INTERFACE> [CONDITION condition] <item1> [<PRIVATE|PUBLIC|INTERFACE> [CONDITION condition] <item2>...]...)
  4. ################################################################################
  5. cmake_policy(PUSH)
  6. cmake_policy(SET CMP0054 NEW)
  7. cmake_policy(SET CMP0057 NEW)
  8. function(target_link_directories TARGET TYPE)
  9.     if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
  10.         set(QUOTE "")
  11.     else()
  12.         set(QUOTE "\"")
  13.     endif()
  14.  
  15.     set(TYPES "PRIVATE" "PUBLIC" "INTERFACE")
  16.  
  17.     unset(LINK_DIRS)
  18.     unset(ARG_ROLE)
  19.     set(CONDITION "1")
  20.     foreach(ARG ${ARGN})
  21.         if("${ARG}" STREQUAL "CONDITION")
  22.             set(ARG_ROLE "CONDITION_KEYWORD")
  23.         elseif("${ARG_ROLE}" STREQUAL "CONDITION_KEYWORD")
  24.             set(ARG_ROLE "CONDITION")
  25.         elseif("${ARG}" IN_LIST TYPES)
  26.             set(ARG_ROLE "TYPE")
  27.         else()
  28.             set(ARG_ROLE "PATH")
  29.         endif()
  30.  
  31.         if("${ARG_ROLE}" STREQUAL "CONDITION")
  32.             set(CONDITION "${ARG}")
  33.         elseif("${ARG_ROLE}" STREQUAL "TYPE")
  34.             set(TYPE "${ARG}")
  35.         elseif("${ARG_ROLE}" STREQUAL "PATH")
  36.             list(APPEND LINK_DIRS ${TYPE} "$<${CONDITION}:${CMAKE_LIBRARY_PATH_FLAG}${QUOTE}${ARG}${QUOTE}>")
  37.         endif()
  38.     endforeach()
  39.  
  40.     target_link_libraries(${TARGET} ${LINK_DIRS})
  41. endfunction()
  42. cmake_policy(POP)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement