File: CMakeLists.txt

package info (click to toggle)
ifcplusplus 0~git20190402.13744d5%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 16,756 kB
  • sloc: cpp: 199,084; makefile: 24
file content (113 lines) | stat: -rw-r--r-- 3,322 bytes parent folder | download | duplicates (2)
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
CMAKE_MINIMUM_REQUIRED (VERSION 2.8.12)

IF(NOT WIN32)
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Debug)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Debug)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Debug)
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/Release)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/Release)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/Release)

IF(NOT CMAKE_BUILD_TYPE)
    SET(CMAKE_BUILD_TYPE "Release")
ENDIF()
ENDIF(NOT WIN32)

FIND_PACKAGE(Boost) 
IF(Boost_FOUND)
    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) 
	ADD_DEFINITIONS( -DCARVE_SYSTEM_BOOST )
ENDIF()

SET(carve_VERSION_MAJOR 2)
SET(carve_VERSION_MINOR 0)
SET(carve_VERSION_PATCH 0a)
SET(CARVE_VERSION ${carve_VERSION_MAJOR}.${carve_VERSION_MINOR}.${carve_VERSION_PATCH})

CONFIGURE_FILE (
  "${CARVE_SOURCE_DIR}/src/include/carve/cmake-config.h.in"
  "${CARVE_BINARY_DIR}/include/carve/config.h"
)

SET(CARVE_SOURCE_FILES 
  src/lib/aabb.cpp
  src/lib/carve.cpp
  src/lib/convex_hull.cpp
  src/lib/csg.cpp
  src/lib/csg_collector.cpp
  src/lib/edge.cpp
  src/lib/face.cpp
  src/lib/geom.cpp
  src/lib/geom2d.cpp
  src/lib/geom3d.cpp
  src/lib/intersect.cpp
  src/lib/intersect_classify_edge.cpp
  src/lib/intersect_classify_group.cpp
  src/lib/intersect_debug.cpp
  src/lib/intersect_face_division.cpp
  src/lib/intersect_group.cpp
  src/lib/intersect_half_classify_group.cpp
  src/lib/intersection.cpp
  src/lib/math.cpp
  src/lib/mesh.cpp
  src/lib/octree.cpp
  src/lib/pointset.cpp
  src/lib/polyhedron.cpp
  src/lib/polyline.cpp
  src/lib/shewchuk_predicates.cpp
  src/lib/tag.cpp
  src/lib/timing.cpp
  src/lib/triangulator.cpp
  src/common/geometry.cpp  
)
IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
	ADD_DEFINITIONS(-DCMAKE_BUILD)
    ADD_LIBRARY(carve SHARED ${CARVE_SOURCE_FILES})
ELSE(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
    ADD_LIBRARY(carve STATIC ${CARVE_SOURCE_FILES})
ENDIF()

# Use this to request C++11 features. Dependent targets will transitively get
# this requirement as well.
TARGET_COMPILE_FEATURES(carve PUBLIC cxx_auto_type)

set_target_properties(carve PROPERTIES DEBUG_POSTFIX "d")

TARGET_INCLUDE_DIRECTORIES(carve
  PUBLIC
    "$<BUILD_INTERFACE:${CARVE_SOURCE_DIR}/src/include>"
    "$<BUILD_INTERFACE:${CARVE_BINARY_DIR}/include>" # For the generated Config file
    "$<INSTALL_INTERFACE:include>"
)

INSTALL(
    DIRECTORY   src/include/carve
    DESTINATION include
    PATTERN "*.in" EXCLUDE
)
INSTALL(
    FILES "${CARVE_BINARY_DIR}/include/carve/config.h"
    DESTINATION include/carve
)
INSTALL(
    TARGETS carve
    EXPORT  carve
    RUNTIME DESTINATION bin
    LIBRARY DESTINATION lib
    ARCHIVE DESTINATION lib
)

# Export the targets so they can be consumed by other cmake projects
SET(target_output_filename carve-targets.cmake)
SET(target_output "${CMAKE_BINARY_DIR}/cmake/${target_output_filename}")

export(
  EXPORT carve
  FILE ${target_output}
  NAMESPACE IFCPP::)

install(
  EXPORT carve
  DESTINATION ${IFCPP_CONFIG_DIR}
  FILE ${target_output_filename}
  NAMESPACE IFCPP::)