You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.1 KiB
CMake
81 lines
2.1 KiB
CMake
cmake_minimum_required(VERSION 3.15)
|
|
project(Clipper2_benchmarks VERSION 1.0 LANGUAGES C CXX)
|
|
|
|
if(NOT DEFINED CMAKE_CXX_STANDARD OR CMAKE_CXX_STANDARD LESS 17)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
endif()
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
# fetch the google benchmark library
|
|
include(FetchContent)
|
|
set(BENCHMARK_ENABLE_GTEST_TESTS OFF)
|
|
set(BENCHMARK_ENABLE_TESTING OFF)
|
|
message("start fetching the googlebenchmark")
|
|
FetchContent_Declare(googlebenchmark
|
|
GIT_REPOSITORY https://github.com/google/benchmark.git
|
|
GIT_TAG v1.7.1
|
|
)
|
|
|
|
FetchContent_MakeAvailable(
|
|
googlebenchmark)
|
|
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
|
message("fetching is done")
|
|
|
|
set(benchmark_srcs
|
|
GetIntersectPtBenchmark.cpp
|
|
PointInPolygonBenchmark.cpp
|
|
StripDuplicateBenchmark.cpp
|
|
# more to add
|
|
)
|
|
|
|
set(CLIPPER2_INC
|
|
${CLIPPER2_INC_FOLDER}/clipper.h
|
|
${CLIPPER2_INC_FOLDER}/clipper.version.h
|
|
${CLIPPER2_INC_FOLDER}/clipper.core.h
|
|
)
|
|
|
|
add_library(Clipper2_bm INTERFACE)
|
|
target_include_directories(Clipper2_bm INTERFACE CLIPPER2_INC)
|
|
|
|
set(CLIPPER2_UTILS_INC
|
|
../Utils/clipper.svg.h
|
|
../Utils/ClipFileLoad.h
|
|
../Utils/ClipFileSave.h
|
|
../Utils/Timer.h
|
|
../Utils/Colors.h
|
|
../Utils/CommonUtils.h
|
|
)
|
|
set(CLIPPER2_UTILS_SRC
|
|
../Utils/clipper.svg.cpp
|
|
../Utils/ClipFileLoad.cpp
|
|
../Utils/ClipFileSave.cpp
|
|
)
|
|
set(CLIPPER2_UTILS "")
|
|
list(APPEND CLIPPER2_UTILS Clipper2utils_bm)
|
|
add_library(Clipper2utils_bm STATIC ${CLIPPER2_UTILS_INC} ${CLIPPER2_UTILS_SRC})
|
|
target_include_directories(Clipper2utils_bm
|
|
PUBLIC ../Clipper2Lib/include
|
|
PUBLIC ../Utils
|
|
)
|
|
target_link_libraries(Clipper2utils_bm PUBLIC Clipper2_bm)
|
|
|
|
# add each benchmark from the benchmark_srcs
|
|
foreach(benchmark ${benchmark_srcs})
|
|
get_filename_component(benchmark_target ${benchmark} NAME_WE)
|
|
|
|
message(STATUS "${PROJECT_NAME} add benchmark ${benchmark_target}")
|
|
add_executable(${benchmark_target} ${benchmark})
|
|
|
|
target_include_directories(${benchmark_target}
|
|
PUBLIC ../Clipper2Lib/include
|
|
PUBLIC ../Utils
|
|
)
|
|
|
|
target_link_libraries(${benchmark_target}
|
|
benchmark::benchmark
|
|
Clipper2_bm
|
|
Clipper2utils_bm
|
|
)
|
|
endforeach()
|