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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 498caee..f3ba717 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -166,7 +166,11 @@ if(LIBIGL_INSTALL)
set(version_config_file "${CMAKE_CURRENT_BINARY_DIR}/LibiglConfigVersion.cmake")
set(export_dest_dir "${CMAKE_INSTALL_LIBDIR}/cmake/igl")
- foreach(suffix IN ITEMS "") #"_restricted" "_copyleft")
+ get_directory_property(targets BUILDSYSTEM_TARGETS)
+ foreach(suffix IN ITEMS "" "_restricted" "_copyleft")
+ if(NOT targets MATCHES "igl${suffix}")
+ continue()
+ endif()
install(EXPORT LibiglTargets${suffix}
DESTINATION ${export_dest_dir}
NAMESPACE igl${suffix}::
diff --git a/cmake/igl/libigl-config.cmake.in b/cmake/igl/libigl-config.cmake.in
index d3ff19f..df11bf5 100644
--- a/cmake/igl/libigl-config.cmake.in
+++ b/cmake/igl/libigl-config.cmake.in
@@ -3,5 +3,30 @@
include(CMakeFindDependencyMacro)
find_dependency(Eigen3 REQUIRED)
find_dependency(Threads REQUIRED)
+if("@LIBIGL_EMBREE@")
+ find_dependency(embree CONFIG)
+endif()
+if("@LIBIGL_GLFW@")
+ find_dependency(glfw3)
+endif()
+if("@LIBIGL_IMGUI@")
+ find_dependency(imgui)
+ find_dependency(imguizmo)
+endif()
+if("@LIBIGL_OPENGL@")
+ find_dependency(OpenGL)
+ find_dependency(glad)
+endif()
+if("@LIBIGL_XML@")
+ find_dependency(tinyxml2)
+endif()
+if("@LIBIGL_COPYLEFT_CGAL@")
+ # cf. cmake/recipes/external/cgal.cmake
+ set(CGAL_CMAKE_EXACT_NT_BACKEND "BOOST_BACKEND" CACHE STRING "CGAL exact NT backend")
+ set(CGAL_DISABLE_GMP ON CACHE BOOL "Disable GMP")
+ find_dependency(CGAL CONFIG COMPONENTS Core)
+endif()
+
include("${CMAKE_CURRENT_LIST_DIR}/LibiglConfigTargets.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/LibiglConfigTargets_copyleft.cmake" OPTIONAL)
check_required_components(Libigl)
diff --git a/cmake/igl/modules/copyleft/cgal.cmake b/cmake/igl/modules/copyleft/cgal.cmake
index e3aa831..371dc7a 100644
--- a/cmake/igl/modules/copyleft/cgal.cmake
+++ b/cmake/igl/modules/copyleft/cgal.cmake
@@ -10,6 +10,7 @@ target_include_directories(igl_copyleft_cgal ${IGL_SCOPE}
# 3. Target sources
file(GLOB INC_FILES "${libigl_SOURCE_DIR}/include/igl/copyleft/cgal/*.h")
+list(APPEND INC_FILES "${libigl_SOURCE_DIR}/include/igl/copyleft/cgal/CGAL_includes.hpp")
file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/include/igl/copyleft/cgal/*.cpp")
igl_target_sources(igl_copyleft_cgal ${INC_FILES} ${SRC_FILES})
@@ -28,6 +29,9 @@ target_link_libraries(igl_copyleft_cgal ${IGL_SCOPE}
CGAL::CGAL_Core
)
+# n. Install target & headers
+igl_install(igl_copyleft_cgal ${INC_FILES} ${SRC_FILES})
+
# 5. Unit tests
file(GLOB SRC_FILES
"${libigl_SOURCE_DIR}/tests/include/igl/copyleft/boolean/*.cpp"
diff --git a/cmake/igl/modules/copyleft/core.cmake b/cmake/igl/modules/copyleft/core.cmake
index 8d03a90..24eb6e5 100644
--- a/cmake/igl/modules/copyleft/core.cmake
+++ b/cmake/igl/modules/copyleft/core.cmake
@@ -17,3 +17,6 @@ igl_target_sources(igl_copyleft_core ${INC_FILES} ${SRC_FILES})
target_link_libraries(igl_copyleft_core ${IGL_SCOPE}
igl::core
)
+
+# n. Install target & headers
+igl_install(igl_copyleft_core ${INC_FILES} ${SRC_FILES})
diff --git a/cmake/igl/modules/core.cmake b/cmake/igl/modules/core.cmake
index 137d30b..187a3ec 100644
--- a/cmake/igl/modules/core.cmake
+++ b/cmake/igl/modules/core.cmake
@@ -12,7 +12,7 @@ target_include_directories(igl_core ${IGL_SCOPE}
)
# 3. Target sources
-file(GLOB INC_FILES "${libigl_SOURCE_DIR}/include/igl/*.h")
+file(GLOB INC_FILES "${libigl_SOURCE_DIR}/include/igl/*.h" "${libigl_SOURCE_DIR}/include/igl/*.hpp")
file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/include/igl/*.cpp")
igl_target_sources(igl_core ${INC_FILES} ${SRC_FILES})
diff --git a/cmake/igl/modules/embree.cmake b/cmake/igl/modules/embree.cmake
index 7f333b0..5fbabe7 100644
--- a/cmake/igl/modules/embree.cmake
+++ b/cmake/igl/modules/embree.cmake
@@ -21,6 +21,9 @@ target_link_libraries(igl_embree ${IGL_SCOPE}
embree::embree
)
+# n. Install target & headers
+igl_install(igl_embree ${INC_FILES} ${SRC_FILES})
+
# 5. Unit tests
file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/tests/include/igl/embree/*.cpp")
igl_add_test(igl_embree ${SRC_FILES})
diff --git a/cmake/igl/modules/glfw.cmake b/cmake/igl/modules/glfw.cmake
index 2da8b0a..853759f 100644
--- a/cmake/igl/modules/glfw.cmake
+++ b/cmake/igl/modules/glfw.cmake
@@ -23,6 +23,9 @@ target_link_libraries(igl_glfw ${IGL_SCOPE}
glfw::glfw
)
+# n. Install target & headers
+igl_install(igl_glfw ${INC_FILES} ${SRC_FILES})
+
# 5. Unit tests
if(LIBIGL_GLFW_TESTS)
file(GLOB SRC_FILES "${libigl_SOURCE_DIR}/tests/include/igl/opengl/glfw/*.cpp")
diff --git a/cmake/igl/modules/imgui.cmake b/cmake/igl/modules/imgui.cmake
index f331854..37fe9c3 100644
--- a/cmake/igl/modules/imgui.cmake
+++ b/cmake/igl/modules/imgui.cmake
@@ -23,3 +23,6 @@ target_link_libraries(igl_imgui ${IGL_SCOPE}
imgui::imgui
imguizmo::imguizmo
)
+
+# n. Install target & headers
+igl_install(igl_imgui ${INC_FILES} ${SRC_FILES})
diff --git a/cmake/igl/modules/opengl.cmake b/cmake/igl/modules/opengl.cmake
index dfadb38..89ba687 100644
--- a/cmake/igl/modules/opengl.cmake
+++ b/cmake/igl/modules/opengl.cmake
@@ -22,3 +22,6 @@ target_link_libraries(igl_opengl ${IGL_SCOPE}
# Link against OpenGL::OpenGL if available, or fallback to OpenGL::GL
$<IF:$<TARGET_EXISTS:OpenGL::OpenGL>,OpenGL::OpenGL,OpenGL::GL>
)
+
+# n. Install target & headers
+igl_install(igl_opengl ${INC_FILES} ${SRC_FILES})
diff --git a/cmake/igl/modules/stb.cmake b/cmake/igl/modules/stb.cmake
index 14db8cf..23c5c66 100644
--- a/cmake/igl/modules/stb.cmake
+++ b/cmake/igl/modules/stb.cmake
@@ -33,3 +33,6 @@ if(LIBIGL_OPENGL)
igl::opengl
)
endif()
+
+# n. Install target & headers
+igl_install(igl_stb ${INC_FILES} ${SRC_FILES})
diff --git a/cmake/igl/modules/xml.cmake b/cmake/igl/modules/xml.cmake
index 31ab979..20c2139 100644
--- a/cmake/igl/modules/xml.cmake
+++ b/cmake/igl/modules/xml.cmake
@@ -19,3 +19,6 @@ target_link_libraries(igl_xml ${IGL_SCOPE}
igl::core
tinyxml2::tinyxml2
)
+
+# n. Install target & headers
+igl_install(igl_xml ${INC_FILES} ${SRC_FILES})
|