-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
121 lines (98 loc) · 3.36 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
cmake_minimum_required(VERSION 3.21)
project(TTool VERSION "0.1.0" LANGUAGES CXX)
# zenodo direct doi link (to change if dataset us updated)
set(TTOOL_DSET_DOI "https://zenodo.org/doi/10.5281/zenodo.7956930" CACHE INTERNAL "")
# Not sur it is a good idea, it will fail on installed version (NR)
set(__TTOOL_CONFIG_PATH__ "${CMAKE_CURRENT_SOURCE_DIR}/assets/config.yml")
set(__TTOOL_ROOT_PATH__ "${CMAKE_CURRENT_SOURCE_DIR}")
include(cmake/dataset.cmake)
include(cmake/classifier.cmake)
file(GLOB glsl_SOURCES src/shader/*.glsl)
source_group("shader" FILES ${glsl_SOURCES})
file(GLOB TTool_SOURCES src/*.cc)
list(REMOVE_ITEM TTool_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cc)
file(GLOB TTOOL_PUBLIC_HDRS include/*.hh)
set(TTOOL_INSTALL_TARGETS ttool)
include(cmake/options.cmake)
include(cmake/dependencies.cmake)
add_library(ttool SHARED ${TTool_SOURCES} ${glsl_SOURCES})
add_library(TTool::ttool ALIAS ttool)
target_compile_features(ttool PUBLIC cxx_std_17)
target_link_libraries(ttool
PUBLIC
${OpenCV_LIBS}
GLEW::GLEW
assimp
glm::glm
glog
torch
)
set_property(TARGET ttool PROPERTY PUBLIC_HEADER ${TTOOL_PUBLIC_HDRS})
target_include_directories(ttool
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
INTERFACE $<INSTALL_INTERFACE:include/TTool>
)
# # create TTool executable
if (TTOOL_BUILD_TTOOL_EXE)
add_executable(ttoolexec src/main.cc)
target_link_libraries(ttoolexec
TTool::ttool
OpenGL::GL
OpenGL::GLU
glfw
GLUT::GLUT
)
list(APPEND TTOOL_INSTALL_TARGETS ttoolexec)
target_compile_definitions(ttoolexec PRIVATE
__TTOOL_CONFIG_PATH__="${__TTOOL_CONFIG_PATH__}"
__TTOOL_ROOT_PATH__="${__TTOOL_ROOT_PATH__}")
endif()
if(NOT TTOOL_TARGETS_EXPORT)
set(TTOOL_TARGETS_EXPORT ${PROJECT_NAME}Targets)
endif()
include(GNUInstallDirs)
install(TARGETS ${TTOOL_INSTALL_TARGETS}
EXPORT ${TTOOL_TARGETS_EXPORT}
LIBRARY
DESTINATION ${CMAKE_INSTALL_LIBDIR}
COMPONENT Libraries
ARCHIVE
DESTINATION ${CMAKE_INSTALL_LIBDIR}
COMPONENT Libraries
RUNTIME
DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT Executables
PUBLIC_HEADER
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/TTool
COMPONENT Developpment
)
install(EXPORT ${TTOOL_TARGETS_EXPORT}
NAMESPACE TTool::
DESTINATION lib/cmake/${PROJECT_NAME}
COMPONENT Developpment)
# Export for build tree
export(EXPORT ${TTOOL_TARGETS_EXPORT}
FILE "${CMAKE_CURRENT_BINARY_DIR}/${TTOOL_TARGETS_EXPORT}.cmake")
include(CMakePackageConfigHelpers)
configure_package_config_file(cmake/${PROJECT_NAME}Config.cmake.in
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)
write_basic_package_version_file(${PROJECT_BINARY_DIR}/TToolConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion)
install(
FILES
${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)
if(TTool_USE_EXTERNAL_TORCH)
install(IMPORTED_RUNTIME_ARTIFACTS torch
RUNTIME_DEPENDENCY_SET torch-set)
install(RUNTIME_DEPENDENCY_SET torch-set)
install(DIRECTORY deps/libtorch/include deps/libtorch/share
DESTINATION ${CMAKE_INSTALL_PREFIX}
COMPONENT Developpment)
endif()