This repository has been archived by the owner on Jun 15, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 26
/
CMakeLists.txt
59 lines (47 loc) · 1.46 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
cmake_minimum_required(VERSION 3.0)
project(libnbt++
VERSION 2.5)
# supported configure options
option(NBT_BUILD_SHARED "Build shared libraries" OFF)
option(NBT_USE_ZLIB "Build additional zlib stream functionality" ON)
option(NBT_BUILD_TESTS "Build the unit tests. Requires CxxTest." ON)
# hide this from includers.
set(BUILD_SHARED_LIBS ${NBT_BUILD_SHARED})
include(GenerateExportHeader)
set(NBT_SOURCES
src/endian_str.cpp
src/tag.cpp
src/tag_array.cpp
src/tag_compound.cpp
src/tag_list.cpp
src/tag_string.cpp
src/value.cpp
src/value_initializer.cpp
src/io/stream_reader.cpp
src/io/stream_writer.cpp
src/text/json_formatter.cpp)
set(NBT_SOURCES_Z
src/io/izlibstream.cpp
src/io/ozlibstream.cpp)
if(NBT_USE_ZLIB)
find_package(ZLIB REQUIRED)
list(APPEND NBT_SOURCES ${NBT_SOURCES_Z})
endif()
add_library(nbt++ ${NBT_SOURCES})
target_include_directories(nbt++ PUBLIC include ${CMAKE_CURRENT_BINARY_DIR})
if(NBT_USE_ZLIB)
target_link_libraries(nbt++ ${ZLIB_LIBRARY})
target_include_directories(nbt++ PUBLIC ${ZLIB_INCLUDE_DIRS})
target_compile_definitions(nbt++ PUBLIC "-DNBT_HAVE_ZLIB")
endif()
target_compile_options(nbt++ PUBLIC -std=c++11)
generate_export_header(nbt++ BASE_NAME nbt)
if(${BUILD_SHARED_LIBS})
set_target_properties(nbt++ PROPERTIES
CXX_VISIBILITY_PRESET hidden
VISIBILITY_INLINES_HIDDEN 1)
endif()
if(NBT_BUILD_TESTS)
enable_testing()
add_subdirectory(test)
endif()