Permalink
Fetching contributors…
Cannot retrieve contributors at this time
113 lines (95 sloc) 5.94 KB
include (CheckSymbolExists)
include_directories(..)
add_executable(knnvalidate knnvalidate.cpp)
target_link_libraries(knnvalidate ${LIB_NAME} ${EXTRA_LIBS} ${Boost_LIBRARIES})
# disable as experimental is broken target_link_libraries(knnvalidate naboexperimental nabo ${EXTRA_LIBS} ${Boost_LIBRARIES})
add_test(validation-2D-exhaustive ${EXECUTABLE_OUTPUT_PATH}/knnvalidate ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.2d.txt 10 2 -1)
add_test(validation-2D-random ${EXECUTABLE_OUTPUT_PATH}/knnvalidate ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.2d.txt 10 2 10000)
add_test(validation-3D-exhaustive ${EXECUTABLE_OUTPUT_PATH}/knnvalidate ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.txt 10 3 -1)
add_test(validation-3D-random ${EXECUTABLE_OUTPUT_PATH}/knnvalidate ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.txt 10 3 10000)
add_test(validation-3D-large-random ${EXECUTABLE_OUTPUT_PATH}/knnvalidate ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 10 3 1000)
add_test(validation-3D-large-random-radius ${EXECUTABLE_OUTPUT_PATH}/knnvalidate ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 10 3 1000 0.5)
find_path(ANN_INCLUDE_DIR ANN.h
/usr/local/include/ANN
/usr/include/ANN
)
find_library(ANN_LIBRARY
NAMES ANN ann
PATHS /usr/local/lib
/usr/lib
)
if (ANN_INCLUDE_DIR AND ANN_LIBRARY)
include_directories(${ANN_INCLUDE_DIR})
set(EXTRA_LIBS ${ANN_LIBRARY} ${EXTRA_LIBS})
add_definitions(-DHAVE_ANN)
message("ANN found, enabling it in benchmarks")
else (ANN_INCLUDE_DIR AND ANN_LIBRARY)
message("ANN not found, disabling it in benchmarks")
endif (ANN_INCLUDE_DIR AND ANN_LIBRARY)
find_path(FLANN_INCLUDE_DIR flann/flann.hpp
/usr/local/include/
/usr/include
)
find_library(FLANN_LIBRARY
flann_cpp
PATHS /usr/local/lib
/usr/lib
)
if (FLANN_INCLUDE_DIR AND FLANN_LIBRARY)
include_directories(${FLANN_INCLUDE_DIR})
set(EXTRA_LIBS ${FLANN_LIBRARY} ${EXTRA_LIBS})
add_definitions(-DHAVE_FLANN)
message("FLANN found, enabling it in benchmarks")
else (FLANN_INCLUDE_DIR AND FLANN_LIBRARY)
message("FLANN not found, disabling it in benchmarks")
endif (FLANN_INCLUDE_DIR AND FLANN_LIBRARY)
check_symbol_exists(_POSIX_TIMERS "unistd.h;time.h" POSIX_TIMERS)
if (POSIX_TIMERS AND NOT APPLE)
set(EXTRA_LIBS ${EXTRA_LIBS} rt)
endif (POSIX_TIMERS AND NOT APPLE)
include_directories(..)
add_executable(knnbench knnbench.cpp)
target_link_libraries(knnbench ${LIB_NAME} ${EXTRA_LIBS} ${Boost_LIBRARIES})
# disable as experimental is broken target_link_libraries(knnbench naboexperimental nabo ${EXTRA_LIBS} ${Boost_LIBRARIES})
add_test(bench-3D-large-exhaustive-10000-K1 ${EXECUTABLE_OUTPUT_PATH}/knnbench ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 1 -10000 3 5)
add_test(bench-3D-large-exhaustive-1000-K1 ${EXECUTABLE_OUTPUT_PATH}/knnbench ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 1 -1000 3 5)
add_test(bench-3D-large-exhaustive-100-K1 ${EXECUTABLE_OUTPUT_PATH}/knnbench ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 1 -100 3 5)
add_test(bench-3D-large-random-K1 ${EXECUTABLE_OUTPUT_PATH}/knnbench ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 1 40000 3 5)
add_test(bench-3D-large-exhaustive-10000-K10 ${EXECUTABLE_OUTPUT_PATH}/knnbench ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 10 -10000 3 5)
add_test(bench-3D-large-exhaustive-1000-K10 ${EXECUTABLE_OUTPUT_PATH}/knnbench ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 10 -1000 3 5)
add_test(bench-3D-large-exhaustive-100-K10 ${EXECUTABLE_OUTPUT_PATH}/knnbench ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 10 -100 3 5)
add_test(bench-3D-large-random-K20 ${EXECUTABLE_OUTPUT_PATH}/knnbench ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 10 40000 3 5)
add_test(bench-3D-large-exhaustive-10000-K30 ${EXECUTABLE_OUTPUT_PATH}/knnbench ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 30 -10000 3 5)
add_test(bench-3D-large-exhaustive-1000-K30 ${EXECUTABLE_OUTPUT_PATH}/knnbench ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 30 -1000 3 5)
add_test(bench-3D-large-exhaustive-100-K30 ${EXECUTABLE_OUTPUT_PATH}/knnbench ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 30 -100 3 5)
add_test(bench-3D-large-random-K30 ${EXECUTABLE_OUTPUT_PATH}/knnbench ${CMAKE_CURRENT_SOURCE_DIR}/data/scan.3d.large.txt 30 40000 3 5)
add_executable(knnepsilon knnepsilon.cpp)
target_link_libraries(knnepsilon ${LIB_NAME} ${EXTRA_LIBS} ${Boost_LIBRARIES})
add_executable(knnbucketsize knnbucketsize.cpp)
target_link_libraries(knnbucketsize ${LIB_NAME} ${EXTRA_LIBS} ${Boost_LIBRARIES})
# Ensure that users cannot instantiate a tree with wrong matrix types.
macro(try_compile_cloud_types MAT_TYPE TREE_TYPE EXPECT)
try_compile(COMPILE_SUCCEEDED
"${CMAKE_CURRENT_BINARY_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/invalid_matrix_types.cpp"
COMPILE_DEFINITIONS "-std=c++11 -D${MAT_TYPE} -D${TREE_TYPE} -I${CMAKE_CURRENT_SOURCE_DIR}/../ -I${CMAKE_CURRENT_SOURCE_DIR}/../third_party/ -I${EIGEN_INCLUDE_DIR} -l${LIB_NAME}"
CMAKE_FLAGS "-DCMAKE_CXX_LINK_EXECUTABLE='echo not linking now...'"
OUTPUT_VARIABLE OUTPUT)
if (${EXPECT} STREQUAL "TRUE")
if (NOT COMPILE_SUCCEEDED)
message( FATAL_ERROR "Compiling a test executable failed. This is an error. Message ${OUTPUT}." )
endif ()
else ()
if (COMPILE_SUCCEEDED)
message( FATAL_ERROR "Tried to instantiate nabo-search trees with non-allowed types and succeeded. This is an error. Message ${OUTPUT}" )
endif ()
endif ()
endmacro(try_compile_cloud_types)
try_compile_cloud_types(NABO_EIGEN_DYNAMIC_TYPE NABO_TYPE_CREATE TRUE)
try_compile_cloud_types(NABO_EIGEN_DYNAMIC_TYPE NABO_TYPE_BRUTE_FORCE TRUE)
try_compile_cloud_types(NABO_EIGEN_DYNAMIC_TYPE NABO_TYPE_LINEAR_HEAP TRUE)
try_compile_cloud_types(NABO_EIGEN_DYNAMIC_TYPE NABO_TYPE_TREE_HEAP TRUE)
try_compile_cloud_types(NABO_EIGEN_SEMI_DYNAMIC_TYPE NABO_TYPE_CREATE FALSE)
try_compile_cloud_types(NABO_EIGEN_SEMI_DYNAMIC_TYPE NABO_TYPE_BRUTE_FORCE FALSE)
try_compile_cloud_types(NABO_EIGEN_SEMI_DYNAMIC_TYPE NABO_TYPE_LINEAR_HEAP FALSE)
try_compile_cloud_types(NABO_EIGEN_SEMI_DYNAMIC_TYPE NABO_TYPE_TREE_HEAP FALSE)