| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- # Filename: AutoInclude.cmake
- # Description: This file backports the CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE
- # introduced in CMake 2.8.11 to previous versions of cmake, and enables the
- # behavior by default.
- #
- # Emulate CMake 2.8.11's CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE behavior.
- if(CMAKE_VERSION VERSION_LESS 2.8.11)
- # Replace some built-in functions in order to extend their functionality.
- function(add_library target)
- _add_library(${target} ${ARGN})
- set_target_properties("${target}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}")
- endfunction()
- function(add_executable target)
- _add_executable(${target} ${ARGN})
- set_target_properties("${target}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}")
- endfunction()
- function(target_link_libraries target)
- set(interface_dirs)
- get_target_property(target_interface_dirs "${target}" INTERFACE_INCLUDE_DIRECTORIES)
- foreach(lib ${ARGN})
- get_target_property(lib_interface_dirs "${lib}" INTERFACE_INCLUDE_DIRECTORIES)
- if(lib_interface_dirs)
- list(APPEND interface_dirs ${lib_interface_dirs})
- endif()
- endforeach()
- list(REMOVE_DUPLICATES interface_dirs)
- #NB. target_include_directories is new in 2.8.8.
- #target_include_directories("${target}" ${interface_dirs})
- include_directories(${interface_dirs})
- # Update this target's interface inc dirs.
- set_target_properties("${target}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${target_interface_dirs};${interface_dirs}")
- # Call to the built-in function we are overriding.
- _target_link_libraries(${target} ${ARGN})
- endfunction()
- else()
- # 2.8.11 supports this natively.
- set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
- endif()
- set(CMAKE_INCLUDE_CURRENT_DIR ON)
|