Advertisement
Guest User

Untitled

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