AutoInclude.cmake 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # Filename: AutoInclude.cmake
  2. # Description: This file backports the CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE
  3. # introduced in CMake 2.8.11 to previous versions of cmake, and enables the
  4. # behavior by default.
  5. #
  6. # Emulate CMake 2.8.11's CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE behavior.
  7. if(CMAKE_VERSION VERSION_LESS 2.8.11)
  8. # Replace some built-in functions in order to extend their functionality.
  9. function(add_library target)
  10. _add_library(${target} ${ARGN})
  11. set_target_properties("${target}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}")
  12. endfunction()
  13. function(add_executable target)
  14. _add_executable(${target} ${ARGN})
  15. set_target_properties("${target}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}")
  16. endfunction()
  17. function(target_link_libraries target)
  18. set(interface_dirs)
  19. get_target_property(target_interface_dirs "${target}" INTERFACE_INCLUDE_DIRECTORIES)
  20. foreach(lib ${ARGN})
  21. get_target_property(lib_interface_dirs "${lib}" INTERFACE_INCLUDE_DIRECTORIES)
  22. if(lib_interface_dirs)
  23. list(APPEND interface_dirs ${lib_interface_dirs})
  24. endif()
  25. endforeach()
  26. list(REMOVE_DUPLICATES interface_dirs)
  27. #NB. target_include_directories is new in 2.8.8.
  28. #target_include_directories("${target}" ${interface_dirs})
  29. include_directories(${interface_dirs})
  30. # Update this target's interface inc dirs.
  31. set_target_properties("${target}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${target_interface_dirs};${interface_dirs}")
  32. # Call to the built-in function we are overriding.
  33. _target_link_libraries(${target} ${ARGN})
  34. endfunction()
  35. else()
  36. # 2.8.11 supports this natively.
  37. set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
  38. endif()
  39. set(CMAKE_INCLUDE_CURRENT_DIR ON)