Blame view

3rdparty/boost_1_81_0/tools/cmake/include/BoostTestJamfile.cmake 1.96 KB
73ef4ff3   Hu Chunming   提交三方库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
  # Copyright 2018, 2019 Peter Dimov
  # Distributed under the Boost Software License, Version 1.0.
  # See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
  
  # Include BoostTest outside the include guard for it to clear its global variables
  include(BoostTest)
  
  if(NOT CMAKE_VERSION VERSION_LESS 3.10)
    include_guard()
  endif()
  
  if(BUILD_TESTING AND CMAKE_VERSION VERSION_LESS 3.9)
    message(AUTHOR_WARNING "BoostTestJamfile requires CMake 3.9") # CMAKE_MATCH_x
  endif()
  
  include(BoostMessage)
  
  # boost_test_jamfile( FILE jamfile [PREFIX prefix]
  #   LINK_LIBRARIES libs...
  #   COMPILE_DEFINITIONS defs...
  #   COMPILE_OPTIONS opts...
  #   COMPILE_FEATURES features...
  # )
  
  function(boost_test_jamfile)
  
    cmake_parse_arguments(_ "" "FILE;PREFIX" "LIBRARIES;LINK_LIBRARIES;COMPILE_DEFINITIONS;COMPILE_OPTIONS;COMPILE_FEATURES" ${ARGN})
  
    if(__UNPARSED_ARGUMENTS)
      message(AUTHOR_WARNING "boost_test_jamfile: extra arguments ignored: ${__UNPARSED_ARGUMENTS}")
    endif()
  
    if(__LIBRARIES)
      message(AUTHOR_WARNING "boost_test_jamfile: LIBRARIES is deprecated, use LINK_LIBRARIES")
    endif()
  
    if(NOT __FILE)
      message(AUTHOR_WARNING "boost_test_jamfile: required argument FILE is missing")
      return()
    endif()
  
    if(DEFINED BUILD_TESTING AND NOT BUILD_TESTING)
      return()
    endif()
  
    file(STRINGS "${__FILE}" data)
  
    set(types "compile|compile-fail|link|link-fail|run|run-fail")
  
    foreach(line IN LISTS data)
  
      if(line MATCHES "^[ \t]*(${types})[ \t]+([^ \t]+)[ \t]*(\;[ \t]*)?$")
  
        boost_test(PREFIX "${__PREFIX}" TYPE "${CMAKE_MATCH_1}"
          SOURCES "${CMAKE_MATCH_2}"
          LINK_LIBRARIES ${__LIBRARIES} ${__LINK_LIBRARIES}
          COMPILE_DEFINITIONS ${__COMPILE_DEFINITIONS}
          COMPILE_OPTIONS ${__COMPILE_OPTIONS}
          COMPILE_FEATURES ${__COMPILE_FEATURES}
        )
  
      elseif(line MATCHES "^[ \t]*(${types})([ \t]|$)")
  
        boost_message(VERBOSE "boost_test_jamfile: Jamfile line ignored: ${line}")
  
      endif()
  
    endforeach()
  endfunction()