File: helpers.cmake

package info (click to toggle)
parallel-hashmap 1.4.1%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,872 kB
  • sloc: cpp: 20,492; ansic: 1,114; python: 492; makefile: 85; haskell: 56; perl: 43; sh: 23
file content (59 lines) | stat: -rw-r--r-- 1,864 bytes parent folder | download
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
#set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(PHMAP_IDE_FOLDER phmap)

# -------------------------------------------------------------
# phmap_cc_test(NAME awesome_test
#               SRCS "awesome_test.cc"
#               DEPS phmap::awesome gmock gtest_main)
# -------------------------------------------------------------
function(phmap_cc_test)
  cmake_parse_arguments(PHMAP_CC_TEST
    ""
    "NAME"
    "SRCS;COPTS;CWOPTS;CLOPTS;DEFINES;LINKOPTS;DEPS"
    ${ARGN}
  )

  set(_NAME "test_${PHMAP_CC_TEST_NAME}")
  add_executable(${_NAME}  ${PHMAP_CC_TEST_SRCS})
  target_include_directories(${_NAME}
    PUBLIC ${PHMAP_COMMON_INCLUDE_DIRS}
    PRIVATE ${GMOCK_INCLUDE_DIRS} ${GTEST_INCLUDE_DIRS}
  )
  target_compile_definitions(${_NAME}
    PUBLIC ${PHMAP_CC_TEST_DEFINES}
  )
if(MSVC)
  target_compile_options(${_NAME}
    PRIVATE ${PHMAP_CC_TEST_CWOPTS} /W4 /Zc:__cplusplus /std:c++latest
  )
else()
  target_compile_options(${_NAME}
    PRIVATE ${PHMAP_CC_TEST_CLOPTS}
  )
endif()
  target_compile_options(${_NAME}
    PRIVATE ${PHMAP_CC_TEST_COPTS}
  )
  target_link_libraries(${_NAME}
    PUBLIC ${PHMAP_CC_TEST_DEPS}
    PRIVATE ${PHMAP_CC_TEST_LINKOPTS}
  )
  # Add all Abseil targets to a a folder in the IDE for organization.
  set_property(TARGET ${_NAME} PROPERTY FOLDER ${PHMAP_IDE_FOLDER}/test)

  set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD ${PHMAP_CXX_STANDARD})
  set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)

  add_test(NAME ${_NAME} COMMAND ${_NAME})
endfunction()

# -------------------------------------------------------------
function(check_target my_target)
  if(NOT TARGET ${my_target})
    message(FATAL_ERROR " PHMAP: compiling phmap tests requires a ${my_target} CMake target in your project,
                   see CMake/README.md for more details")
  endif(NOT TARGET ${my_target})
endfunction()