File: CMakeLists.txt

package info (click to toggle)
lager 0.1.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,888 kB
  • sloc: cpp: 10,602; javascript: 10,433; makefile: 214; python: 100; sh: 98
file content (73 lines) | stat: -rw-r--r-- 2,320 bytes parent folder | download | duplicates (2)
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
70
71
72
73

#  Utils
#  =====

find_package(Qt5Core)
find_package(Qt5Concurrent)
find_package(Qt5Qml)
find_package(Qt5Quick)

function(lager_target_name_for out_target out_file file)
  get_filename_component(_extension ${_file} EXT)

  file(RELATIVE_PATH _relative ${PROJECT_SOURCE_DIR} ${file})
  string(REPLACE "${_extension}" "" _name ${_relative})
  string(REGEX REPLACE "/" "-" _name ${_name})
  set(${out_target} "${_name}" PARENT_SCOPE)

  string(REPLACE "${_extension}" "" _name ${_relative})
  string(REGEX REPLACE "/" "-" _name ${_name})
  set(${out_file} "${_name}" PARENT_SCOPE)
endfunction()

function(lager_get_qt_libs out_qt_required out_qt_libs target)
  set(${out_qt_required} FALSE PARENT_SCOPE)
  unset(${out_qt_libs} PARENT_SCOPE)

  string(FIND ${target} "qt" _qt_required)
  if(${_qt_required} GREATER 0)
    set(${out_qt_required} TRUE PARENT_SCOPE)
    if(${Qt5Core_FOUND} AND ${Qt5Concurrent_FOUND})
      set(${out_qt_libs} PRIVATE Qt5::Core Qt5::Concurrent PARENT_SCOPE)
    endif()
  endif()

  string(FIND ${target} "qml" _qml_required)
  if(${_qml_required} GREATER 0)
    set(${out_required} TRUE PARENT_SCOPE)
    if(${Qt5Core_FOUND} AND ${Qt5Quick_FOUND})
      set(${out_qt_libs} PRIVATE Qt5::Core Qt5::Quick PARENT_SCOPE)
    endif()
  endif()
endfunction()

#  Targets
#  =======

find_package(Qt5 COMPONENTS Core Concurrent)

add_custom_target(tests COMMENT "Build all the unit tests.")
add_dependencies(check tests)

file(GLOB lager_unit_tests "*.cpp" "cereal/*.cpp" "event_loop/*.cpp" "extra/*.cpp" "detail/*.cpp")

foreach(_file IN LISTS lager_unit_tests)
  message("found unit test: " ${_file})
  lager_target_name_for(_target _output "${_file}")
  lager_get_qt_libs(_qt_required _qt_libs ${_target})
  if(${_qt_required} AND (NOT DEFINED _qt_libs))
    message(WARNING "Qt dependency not found - skipping target ${_target}")
    continue()
  endif()
  add_executable(${_target} EXCLUDE_FROM_ALL "${_file}")
  set_target_properties(${_target} PROPERTIES OUTPUT_NAME ${_output})
  add_dependencies(tests ${_target})
  target_compile_definitions(${_target} PUBLIC CATCH_CONFIG_MAIN)
  target_link_libraries(${_target} PUBLIC lager-dev Catch2::Catch2 ${_qt_libs})
  add_test("test/${_output}" ${_output})
endforeach()


if (lager_BUILD_FAILURE_TESTS)
  add_subdirectory(build_failure)
endif()