-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathCMakeLists.txt
74 lines (63 loc) · 2.86 KB
/
CMakeLists.txt
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
74
if(SKBUILD)
# Scikit-Build does not add your site-packages to the search path
# automatically, so we need to add it _or_ the pybind11 specific directory
# here.
execute_process(
COMMAND "${PYTHON_EXECUTABLE}" -c
"import pybind11; print(pybind11.get_cmake_dir())"
OUTPUT_VARIABLE _tmp_dir
OUTPUT_STRIP_TRAILING_WHITESPACE COMMAND_ECHO STDOUT)
list(APPEND CMAKE_PREFIX_PATH "${_tmp_dir}")
endif()
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
#include(BuildRequires)
set(COPC_PYTHON_LIB _core)
find_package(pybind11 CONFIG REQUIRED)
# add the python lib
pybind11_add_module(${COPC_PYTHON_LIB} bindings.cpp)
if (LAZPERF_FOUND)
target_link_libraries(${COPC_PYTHON_LIB} PRIVATE ${LAZPERF_LIB_NAME} copc-lib-s)
else ()
target_link_libraries(${COPC_PYTHON_LIB} PRIVATE lazperf_s copc-lib-s)
endif ()
install(TARGETS ${COPC_PYTHON_LIB} DESTINATION .)
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/copclib DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(${COPC_PYTHON_LIB} PROPERTIES
# have the python lib output to the python build dir
# not the /lib dir
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/copclib
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/copclib)
if(UNIX AND NOT APPLE)
add_custom_command(TARGET ${COPC_PYTHON_LIB} POST_BUILD
COMMAND stubgen -m _core -o .
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/copclib
COMMENT "Generating stubs for pybind"
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/copclib/_core.pyi DESTINATION .)
endif()
if(WITH_TESTS)
include(DownloadExampleFiles)
download_test_files("${CMAKE_CURRENT_BINARY_DIR}/data/autzen-classified.copc.laz")
# PY_SOURCE_DIR is the folder we'll copy the python scripts into
set(PY_SOURCE_DIR ${CMAKE_SOURCE_DIR}/test)
set(PY_EXAMPLE_DIR ${CMAKE_SOURCE_DIR}/example)
# add the tests
add_test(NAME python-tests
COMMAND ${PYTHON_EXECUTABLE} -m pytest "${PY_SOURCE_DIR}"
WORKING_DIRECTORY ${PY_SOURCE_DIR}
)
add_test(NAME example_reader_py
COMMAND ${PYTHON_EXECUTABLE} "${PY_EXAMPLE_DIR}/example_reader.py"
WORKING_DIRECTORY ${PY_EXAMPLE_DIR}
)
add_test(NAME example_writer_py
COMMAND ${PYTHON_EXECUTABLE} "${PY_EXAMPLE_DIR}/example_writer.py"
WORKING_DIRECTORY ${PY_EXAMPLE_DIR}
)
add_test(NAME example_laz_writer_py
COMMAND ${PYTHON_EXECUTABLE} "${PY_EXAMPLE_DIR}/example_laz_writer.py"
WORKING_DIRECTORY ${PY_EXAMPLE_DIR}
)
set_tests_properties(python-tests example_reader_py example_writer_py example_laz_writer_py
PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}:$ENV{PYTHONPATH}")
endif()