-
Notifications
You must be signed in to change notification settings - Fork 168
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
114 lines (94 loc) · 4.76 KB
/
CMakeLists.txt
File metadata and controls
114 lines (94 loc) · 4.76 KB
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
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
project(libdxfrw VERSION 0.6.3)
# Enable testing
enable_testing()
file(GLOB libdxfrw_sources src/*.cpp)
file(GLOB libdxfrw_headers include/*.h)
file(GLOB libdxfrw_intern_sources src/intern/*.cpp)
# Find iconv library
if(WIN32)
include_directories(vs2013/packages/libiconv.1.14.0.11/build/native/include)
link_directories(vs2013/packages/libiconv.1.14.0.11/build/native/lib)
set(ICONV_LIBRARY iconv)
else()
# On Unix-like systems (Linux, macOS)
find_package(Iconv REQUIRED)
if(Iconv_FOUND)
include_directories(${Iconv_INCLUDE_DIRS})
set(ICONV_LIBRARY ${Iconv_LIBRARIES})
else()
# Fallback: try to link against iconv directly
set(ICONV_LIBRARY iconv)
endif()
endif()
include_directories(include)
add_library(dxfrw STATIC ${libdxfrw_sources} ${libdxfrw_intern_sources})
target_link_libraries(dxfrw ${ICONV_LIBRARY})
install(FILES ${libdxfrw_headers} DESTINATION include)
if(WIN32)
install(TARGETS dxfrw
CONFIGURATIONS Debug
LIBRARY DESTINATION Debug/lib
ARCHIVE DESTINATION Debug/lib)
install(TARGETS dxfrw
CONFIGURATIONS Release
LIBRARY DESTINATION Release/lib
ARCHIVE DESTINATION Release/lib)
else()
install(TARGETS dxfrw
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
endif()
# Tests
add_executable(test_basic tests/test_basic.cpp)
target_include_directories(test_basic PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_basic dxfrw ${ICONV_LIBRARY})
add_test(NAME BasicTests COMMAND test_basic)
add_executable(test_entities tests/test_entities.cpp)
target_include_directories(test_entities PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_entities dxfrw ${ICONV_LIBRARY})
add_test(NAME EntityTests COMMAND test_entities)
add_executable(test_polylines tests/test_polylines.cpp)
target_include_directories(test_polylines PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_polylines dxfrw ${ICONV_LIBRARY})
add_test(NAME PolylineTests COMMAND test_polylines)
add_executable(test_text tests/test_text.cpp)
target_include_directories(test_text PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_text dxfrw ${ICONV_LIBRARY})
add_test(NAME TextTests COMMAND test_text)
add_executable(test_tables tests/test_tables.cpp)
target_include_directories(test_tables PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_tables dxfrw ${ICONV_LIBRARY})
add_test(NAME TableTests COMMAND test_tables)
add_executable(test_blocks tests/test_blocks.cpp)
target_include_directories(test_blocks PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_blocks dxfrw ${ICONV_LIBRARY})
add_test(NAME BlockTests COMMAND test_blocks)
add_executable(test_versions tests/test_versions.cpp)
target_include_directories(test_versions PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_versions dxfrw ${ICONV_LIBRARY})
add_test(NAME VersionTests COMMAND test_versions)
add_executable(test_errors tests/test_errors.cpp)
target_include_directories(test_errors PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_errors dxfrw ${ICONV_LIBRARY})
add_test(NAME ErrorTests COMMAND test_errors)
add_executable(test_dimensions tests/test_dimensions.cpp)
target_include_directories(test_dimensions PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_dimensions dxfrw ${ICONV_LIBRARY})
add_test(NAME DimensionTests COMMAND test_dimensions)
add_executable(test_annotations tests/test_annotations.cpp)
target_include_directories(test_annotations PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_annotations dxfrw ${ICONV_LIBRARY})
add_test(NAME AnnotationTests COMMAND test_annotations)
add_executable(test_attributes tests/test_attributes.cpp)
target_include_directories(test_attributes PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_attributes dxfrw ${ICONV_LIBRARY})
add_test(NAME AttributeTests COMMAND test_attributes)
add_executable(test_class_underflow tests/test_class_underflow.cpp)
target_include_directories(test_class_underflow PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_class_underflow dxfrw ${ICONV_LIBRARY})
add_test(NAME ClassUnderflowTests COMMAND test_class_underflow)
add_executable(test_dwg_classes tests/test_dwg_classes.cpp)
target_include_directories(test_dwg_classes PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
target_link_libraries(test_dwg_classes dxfrw ${ICONV_LIBRARY})
add_test(NAME DWGClassParsingTests COMMAND test_dwg_classes)