CMAKE_CURRENT_FUNCTION.cmake 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. set(_THIS_FILE "${CMAKE_CURRENT_LIST_FILE}")
  2. set(_THIS_DIR "${CMAKE_CURRENT_LIST_DIR}")
  3. if(CMAKE_CURRENT_FUNCTION)
  4. message(SEND_ERROR "`CMAKE_CURRENT_FUNCTION` is not expected to be set here")
  5. endif()
  6. if(CMAKE_CURRENT_FUNCTION_LIST_FILE)
  7. message(SEND_ERROR "`CMAKE_CURRENT_FUNCTION_LIST_FILE` is not expected to be set here")
  8. endif()
  9. if(CMAKE_CURRENT_FUNCTION_LIST_DIR)
  10. message(SEND_ERROR "`CMAKE_CURRENT_FUNCTION_LIST_DIR` is not expected to be set here")
  11. endif()
  12. if(CMAKE_CURRENT_FUNCTION_LIST_LINE)
  13. message(SEND_ERROR "`CMAKE_CURRENT_FUNCTION_LIST_LINE` is not expected to be set here")
  14. endif()
  15. function(bar)
  16. if(NOT CMAKE_CURRENT_FUNCTION STREQUAL "bar")
  17. message(SEND_ERROR "Bad value of `CMAKE_CURRENT_FUNCTION`")
  18. endif()
  19. if(NOT CMAKE_CURRENT_FUNCTION_LIST_FILE MATCHES "^.*/CMAKE_CURRENT_FUNCTION.cmake$")
  20. message(SEND_ERROR "Bad value of `CMAKE_CURRENT_FUNCTION_LIST_FILE`")
  21. endif()
  22. if(NOT CMAKE_CURRENT_FUNCTION_LIST_FILE STREQUAL _THIS_FILE)
  23. message(SEND_ERROR "Bad value of `CMAKE_CURRENT_FUNCTION_LIST_FILE`")
  24. endif()
  25. if(NOT CMAKE_CURRENT_FUNCTION_LIST_DIR MATCHES "^.*/Tests/RunCMake/function$")
  26. message(SEND_ERROR "Bad value of `CMAKE_CURRENT_FUNCTION_LIST_DIR`")
  27. endif()
  28. if(NOT CMAKE_CURRENT_FUNCTION_LIST_DIR STREQUAL _THIS_DIR)
  29. message(SEND_ERROR "Bad value of `CMAKE_CURRENT_FUNCTION_LIST_DIR`")
  30. endif()
  31. if(NOT CMAKE_CURRENT_FUNCTION_LIST_LINE EQUAL 17)
  32. message(SEND_ERROR "Bad value of `CMAKE_CURRENT_FUNCTION_LIST_LINE`")
  33. endif()
  34. endfunction()
  35. function(foo)
  36. if(NOT CMAKE_CURRENT_FUNCTION STREQUAL "foo")
  37. message(SEND_ERROR "Bad value of `CMAKE_CURRENT_FUNCTION`")
  38. endif()
  39. if(NOT CMAKE_CURRENT_FUNCTION_LIST_FILE MATCHES "^.*/function/CMAKE_CURRENT_FUNCTION.cmake$")
  40. message(SEND_ERROR "Bad value of `CMAKE_CURRENT_FUNCTION_LIST_FILE`")
  41. endif()
  42. if(NOT CMAKE_CURRENT_FUNCTION_LIST_FILE STREQUAL _THIS_FILE)
  43. message(SEND_ERROR "Bad value of `CMAKE_CURRENT_FUNCTION_LIST_FILE`")
  44. endif()
  45. if(NOT CMAKE_CURRENT_FUNCTION_LIST_DIR MATCHES "^.*/Tests/RunCMake/function$")
  46. message(SEND_ERROR "Bad value of `CMAKE_CURRENT_FUNCTION_LIST_DIR`")
  47. endif()
  48. if(NOT CMAKE_CURRENT_FUNCTION_LIST_LINE EQUAL 38)
  49. message(SEND_ERROR "Bad value of `CMAKE_CURRENT_FUNCTION_LIST_LINE`")
  50. endif()
  51. if(NOT CMAKE_CURRENT_FUNCTION_LIST_DIR STREQUAL _THIS_DIR)
  52. message(SEND_ERROR "Bad value of `CMAKE_CURRENT_FUNCTION_LIST_DIR`")
  53. endif()
  54. bar()
  55. endfunction()
  56. foo()
  57. if(CMAKE_CURRENT_FUNCTION)
  58. message(SEND_ERROR "`CMAKE_CURRENT_FUNCTION` is not expected to be set here")
  59. endif()
  60. if(CMAKE_CURRENT_FUNCTION_LIST_FILE)
  61. message(SEND_ERROR "`CMAKE_CURRENT_FUNCTION_LIST_FILE` is not expected to be set here")
  62. endif()
  63. if(CMAKE_CURRENT_FUNCTION_LIST_DIR)
  64. message(SEND_ERROR "`CMAKE_CURRENT_FUNCTION_LIST_DIR` is not expected to be set here")
  65. endif()
  66. if(CMAKE_CURRENT_FUNCTION_LIST_LINE)
  67. message(SEND_ERROR "`CMAKE_CURRENT_FUNCTION_LIST_LINE` is not expected to be set here")
  68. endif()
  69. include("${CMAKE_CURRENT_LIST_DIR}/DummyMacro.cmake")
  70. function(calling_macro)
  71. dummy()
  72. endfunction()
  73. calling_macro()
  74. # ATTENTION `CMAKE_CURRENT_LIST_LINE` can't be used in `math()'
  75. function(print_self)
  76. file(STRINGS "${CMAKE_CURRENT_FUNCTION_LIST_FILE}" _lines)
  77. math(EXPR _begin "${CMAKE_CURRENT_FUNCTION_LIST_LINE} - 1")
  78. list(SUBLIST _lines ${_begin} 7 _lines) # This function has 7 lines only
  79. list(JOIN _lines "\n" _lines)
  80. message(STATUS "Print the `${CMAKE_CURRENT_FUNCTION}` function:\n${_lines}")
  81. endfunction()
  82. print_self()