Skip to content

Commit d0f4cf2

Browse files
committed
Clean up CMakeLists.txt
1 parent 46e5aa3 commit d0f4cf2

File tree

8 files changed

+84
-55
lines changed

8 files changed

+84
-55
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.idea/
22
.vscode/
33
build/
4+
install/
45
.DS_Store
56
meshes/*
67
!meshes/box.obj

CMakeLists.txt

+16-48
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
1616
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
1717
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
1818

19-
find_package(boost_container CONFIG REQUIRED)
20-
find_package(boost_container_hash CONFIG REQUIRED)
21-
find_package(boost_endian CONFIG REQUIRED)
22-
find_package(boost_iterator CONFIG REQUIRED)
23-
find_package(boost_program_options CONFIG REQUIRED)
24-
find_package(boost_program_options CONFIG REQUIRED)
25-
find_package(boost_range CONFIG REQUIRED)
19+
find_package(Boost CONFIG REQUIRED COMPONENTS container container_hash endian iterator program_options range)
2620
find_package(CGAL CONFIG REQUIRED)
2721
find_package(FastFloat CONFIG REQUIRED)
2822
find_package(GTest CONFIG REQUIRED)
@@ -32,7 +26,8 @@ set(TARGET kigumi)
3226
add_library(${TARGET} INTERFACE)
3327

3428
target_include_directories(${TARGET} INTERFACE
35-
${CMAKE_CURRENT_SOURCE_DIR}/include
29+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
30+
"$<INSTALL_INTERFACE:include>"
3631
)
3732

3833
target_link_libraries(${TARGET} INTERFACE
@@ -46,54 +41,27 @@ target_link_libraries(${TARGET} INTERFACE
4641
)
4742

4843
if(KIGUMI_BUILD_BENCHES)
49-
find_package(Eigen3 CONFIG REQUIRED)
50-
find_package(libigl CONFIG REQUIRED)
51-
find_package(PkgConfig REQUIRED)
52-
pkg_check_modules(Clipper2 REQUIRED IMPORTED_TARGET Clipper2)
53-
54-
include(FetchContent)
55-
56-
FetchContent_Declare(
57-
geogram
58-
GIT_REPOSITORY https://github.com/BrunoLevy/geogram.git
59-
GIT_TAG main
60-
GIT_SHALLOW ON
61-
)
62-
set(GEOGRAM_LIB_ONLY ON CACHE BOOL "")
63-
set(GEOGRAM_WITH_GRAPHICS OFF CACHE BOOL "")
64-
set(GEOGRAM_WITH_HLBFGS OFF CACHE BOOL "")
65-
set(GEOGRAM_WITH_LEGACY_NUMERICS OFF CACHE BOOL "")
66-
set(GEOGRAM_WITH_LUA OFF CACHE BOOL "")
67-
set(GEOGRAM_WITH_TETGEN OFF CACHE BOOL "")
68-
set(GEOGRAM_WITH_TRIANGLE OFF CACHE BOOL "")
69-
FetchContent_MakeAvailable(geogram)
70-
71-
FetchContent_Declare(
72-
manifold
73-
GIT_REPOSITORY https://github.com/elalish/manifold.git
74-
GIT_TAG master
75-
GIT_SHALLOW ON
76-
)
77-
set(MANIFOLD_CROSS_SECTION OFF CACHE BOOL "")
78-
set(MANIFOLD_TEST OFF CACHE BOOL "")
79-
FetchContent_MakeAvailable(manifold)
80-
81-
FetchContent_Declare(
82-
mcut
83-
GIT_REPOSITORY https://github.com/cutdigital/mcut.git
84-
GIT_TAG master
85-
GIT_SHALLOW ON
86-
)
87-
FetchContent_MakeAvailable(mcut)
88-
8944
add_subdirectory(benches)
9045
endif()
9146

9247
if(KIGUMI_BUILD_CLI)
9348
add_subdirectory(cli)
49+
install(TARGETS kigumi_cli)
9450
endif()
9551

9652
if(KIGUMI_BUILD_TESTS)
9753
enable_testing()
9854
add_subdirectory(tests)
9955
endif()
56+
57+
install(TARGETS ${TARGET} EXPORT ${TARGET}Config)
58+
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/
59+
DESTINATION include)
60+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/kigumiConfig.cmake
61+
DESTINATION lib/cmake/kigumi
62+
)
63+
install(EXPORT ${TARGET}Config
64+
FILE ${PROJECT_NAME}Targets.cmake
65+
DESTINATION lib/cmake/${PROJECT_NAME}
66+
NAMESPACE ${PROJECT_NAME}::
67+
)

README.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ and [Boolean_region_builder.h](include/kigumi/Boolean_region_builder.h).
2121

2222
Here are the timings (in seconds) for computing the Boolean intersection between meshes, excluding I/O time:
2323

24-
| Test case | [coref.][coref] (seq.) | [geogram][geogram] (par.) | kigumi (seq.)¹ | kigumi (par.) | [libigl][libigl] (par.)² | [manif.][manif] (seq.) | manif. (par.)³ | [MCUT][mcut] (par.) |
25-
|-------------------|-----------------------:|--------------------------:|---------------:|--------------:|-------------------------:|-----------------------:|---------------:|--------------------:|
26-
| **Open** | 4.6 | FAILED | 2.4 | 1.3 | FAILED | FAILED | FAILED | FAILED |
27-
| **Open & closed** | FAILED | 70.5 | 1.6 | 0.9 | FAILED | FAILED | FAILED | FAILED |
28-
| **Closed** | 57.4 | FAILED | 5.3 | 2.7 | 61.0 | 8.9 | 1.7 | 24.5 |
29-
| **Non-manifold** | FAILED | FAILED | 0.5 | 0.3 | FAILED | FAILED | FAILED | FAILED |
24+
| Test case | [coref.][coref] (seq.) | [geogram][geogram] (par.) | kigumi (seq.)¹ | kigumi (par.) | [libigl][libigl] (par.)² | [manif.][manif] (seq.)³ | manif. (par.) | [MCUT][mcut] (par.) |
25+
|-------------------|-----------------------:|--------------------------:|---------------:|--------------:|-------------------------:|------------------------:|--------------:|--------------------:|
26+
| **Open** | 4.6 | FAILED | 2.4 | 1.3 | FAILED | FAILED | FAILED | FAILED |
27+
| **Open & closed** | FAILED | 70.5 | 1.6 | 0.9 | FAILED | FAILED | FAILED | FAILED |
28+
| **Closed** | 57.4 | FAILED | 5.3 | 2.7 | 61.0 | 8.9 | 1.7 | 24.5 |
29+
| **Non-manifold** | FAILED | FAILED | 0.5 | 0.3 | FAILED | FAILED | FAILED | FAILED |
3030

3131
¹ Ran with `KIGUMI_NUM_THREADS=1`. ² `igl::copyleft::cgal::mesh_boolean` with `CGAL::Lazy_exact_nt<mpq_class>` as the
32-
number type was used. ³ Configured with `-DMANIFOLD_PAR=TBB`.
32+
number type was used. ³ Configured with `-DMANIFOLD_PAR=NONE`.
3333

3434
Benchmarks were performed on a MacBook Pro 13" (M1, 2020). Programs were built with Homebrew Clang 18.1.8. The following
3535
commands were used:

benches/geogram/CMakeLists.txt

+20
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
include(FetchContent)
2+
FetchContent_Declare(
3+
geogram
4+
GIT_REPOSITORY https://github.com/BrunoLevy/geogram.git
5+
GIT_TAG main
6+
GIT_SHALLOW ON
7+
)
8+
set(GEOGRAM_LIB_ONLY ON CACHE BOOL "")
9+
set(GEOGRAM_WITH_GRAPHICS OFF CACHE BOOL "")
10+
set(GEOGRAM_WITH_HLBFGS OFF CACHE BOOL "")
11+
set(GEOGRAM_WITH_LEGACY_NUMERICS OFF CACHE BOOL "")
12+
set(GEOGRAM_WITH_LUA OFF CACHE BOOL "")
13+
set(GEOGRAM_WITH_TETGEN OFF CACHE BOOL "")
14+
set(GEOGRAM_WITH_TRIANGLE OFF CACHE BOOL "")
15+
FetchContent_GetProperties(geogram)
16+
if(NOT geogram_POPULATED)
17+
FetchContent_Populate(geogram)
18+
add_subdirectory(${geogram_SOURCE_DIR} ${geogram_BINARY_DIR} EXCLUDE_FROM_ALL)
19+
endif()
20+
121
set(TARGET kigumi_bench_geogram)
222

323
add_executable(${TARGET}

benches/libigl/CMakeLists.txt

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
find_package(Eigen3 CONFIG REQUIRED)
2+
find_package(libigl CONFIG REQUIRED)
3+
14
set(TARGET kigumi_bench_libigl)
25

36
add_executable(${TARGET}

benches/manifold/CMakeLists.txt

+19
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1+
find_package(PkgConfig REQUIRED)
2+
pkg_check_modules(Clipper2 REQUIRED IMPORTED_TARGET Clipper2)
3+
4+
include(FetchContent)
5+
FetchContent_Declare(
6+
manifold
7+
GIT_REPOSITORY https://github.com/elalish/manifold.git
8+
GIT_TAG master
9+
GIT_SHALLOW ON
10+
)
11+
set(MANIFOLD_CROSS_SECTION OFF CACHE BOOL "")
12+
set(MANIFOLD_PAR "TBB" CACHE STRING "")
13+
set(MANIFOLD_TEST OFF CACHE BOOL "")
14+
FetchContent_GetProperties(manifold)
15+
if(NOT manifold_POPULATED)
16+
FetchContent_Populate(manifold)
17+
add_subdirectory(${manifold_SOURCE_DIR} ${manifold_BINARY_DIR} EXCLUDE_FROM_ALL)
18+
endif()
19+
120
set(TARGET kigumi_bench_manifold)
221

322
add_executable(${TARGET}

benches/mcut/CMakeLists.txt

+13
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
include(FetchContent)
2+
FetchContent_Declare(
3+
mcut
4+
GIT_REPOSITORY https://github.com/cutdigital/mcut.git
5+
GIT_TAG master
6+
GIT_SHALLOW ON
7+
)
8+
FetchContent_GetProperties(mcut)
9+
if(NOT mcut_POPULATED)
10+
FetchContent_Populate(mcut)
11+
add_subdirectory(${mcut_SOURCE_DIR} ${mcut_BINARY_DIR} EXCLUDE_FROM_ALL)
12+
endif()
13+
114
set(TARGET kigumi_bench_mcut)
215

316
add_executable(${TARGET}

kigumiConfig.cmake

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
find_dependency(Boost REQUIRED COMPONENTS container container_hash endian iterator range)
2+
find_dependency(CGAL REQUIRED)
3+
find_dependency(FastFloat REQUIRED)
4+
5+
include("${CMAKE_CURRENT_LIST_DIR}/kigumiTargets.cmake")

0 commit comments

Comments
 (0)