minetest-mapper-cpp/Minetestmapper/CMakeLists.txt

153 lines
4.1 KiB
CMake

# CMakeList.txt: CMake-Projekt für "Minetestmapper". Schließen Sie die Quelle ein, und definieren Sie
# projektspezifische Logik hier.
#
cmake_minimum_required (VERSION 3.8)
set (CMAKE_CXX_STANDARD 17)
set(sources
PixelAttributes.cpp
PixelAttributes.h
PlayerAttributes.cpp
PlayerAttributes.h
TileGenerator.cpp
TileGenerator.h
ZlibDecompressor.cpp
ZlibDecompressor.h
Color.cpp
Color.h
DataFileParser.cpp
DataFileParser.h
Settings.cpp
Settings.h
BlockPos.cpp
BlockPos.h
MapBlock.cpp
MapBlock.h
Mapper.cpp
Mapper.h
main.cpp
CharEncodingConverter.cpp
CharEncodingConverter.h
CharEncodingConverterIConv.cpp
CharEncodingConverterIConv.h
PaintEngine.h
PaintEngine_libgd.cpp
PaintEngine_libgd.h
PaintEngine_libgdTTF.cpp
PaintEngine_libgdTTF.h
porting.cpp
porting.h
db.h
db-leveldb.cpp
db-leveldb.h
db-postgresql.cpp
db-postgresql.h
db-redis.cpp
db-redis.h
db-sqlite3.cpp
db-sqlite3.h
parg.h
parg.c
util.h
)
if(WIN32)
list(APPEND sources Minetestmapper.rc)
endif(WIN32)
add_executable(Minetestmapper ${sources})
# Platform dependant stuff
if(WIN32)
target_compile_definitions(Minetestmapper PRIVATE _USE_MATH_DEFINES)
elseif(UNIX)
endif()
# Required Libraries
###############################################################################
find_library(SQLITE3_LIBRARY sqlite3)
find_path(SQLITE3_INCLUDE_DIR sqlite3.h)
find_package(ZLIB REQUIRED)
find_library(LIBGD_LIBRARY NAMES gd libgd libgd_static)
find_path(LIBGD_INCLUDE_DIR NAMES gd.h)
target_link_libraries(Minetestmapper ${LIBGD_LIBRARY} ZLIB::ZLIB ${SQLITE3_LIBRARY})
target_include_directories(Minetestmapper PRIVATE ${LIBGD_INCLUDE_DIR})
if(UNIX)
find_package(PNG REQUIRED)
find_package(Threads REQUIRED)
target_link_libraries(Minetestmapper PNG::PNG Threads::Threads ${CMAKE_DL_LIBS})
target_link_libraries(Minetestmapper $<$<AND:$<CXX_COMPILER_ID:GNU>,$<VERSION_LESS:$<CXX_COMPILER_VERSION>,9.0>>:stdc++fs>)
endif()
# Optional Libraries
###############################################################################
if(USE_LEVELDB)
target_link_libraries(Minetestmapper ${LEVELDB_LIBRARY})
if(WIN32)
# the leveld database driver requires PathFileExistsW which is in the Shlwapi library
target_link_libraries(Minetestmapper "Shlwapi.lib")
endif(WIN32)
endif()
if(USE_POSTGRESQL)
target_link_libraries(Minetestmapper ${POSTGRESQL_LIBRARY})
if(WIN32)
# the libpq database driver requires htonl which is in the Ws2_32 library
target_link_libraries(Minetestmapper "Ws2_32.lib")
endif(WIN32)
endif()
if(USE_REDIS)
target_link_libraries(Minetestmapper ${REDIS_LIBRARY})
endif()
# Installation
###############################################################################
set(INSTALL_RUNTIME_DIR "bin")
if(WIN32)
set(INSTALL_RUNTIME_DIR ".")
endif()
set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION ${INSTALL_RUNTIME_DIR})
include (InstallRequiredSystemLibraries)
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJECT_NAME})
set(CPACK_PACKAGE_VENDOR "Adrido")
set(CPACK_PACKAGE_CONTACT "https://github.com/adrido/")
set(CPACK_GENERATOR "ZIP")
include(CPack)
install(TARGETS Minetestmapper RUNTIME DESTINATION ${INSTALL_RUNTIME_DIR})
if(WIN32)
#copy required dlls to install dir
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Release/
DESTINATION ${INSTALL_RUNTIME_DIR}
CONFIGURATIONS Release
FILES_MATCHING PATTERN "*.dll")
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Debug/
DESTINATION ${INSTALL_RUNTIME_DIR}
CONFIGURATIONS Debug
FILES_MATCHING PATTERN "*.dll")
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/
DESTINATION ${INSTALL_RUNTIME_DIR}
CONFIGURATIONS RelWithDebInfo
FILES_MATCHING PATTERN "*.dll")
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/MinSizeRel/
DESTINATION ${INSTALL_RUNTIME_DIR}
CONFIGURATIONS RelWithDebInfo
FILES_MATCHING PATTERN "*.dll")
endif(WIN32)
install(DIRECTORY "${PROJECT_SOURCE_DIR}/colors/" DESTINATION "${INSTALL_RUNTIME_DIR}/colors/"
FILES_MATCHING PATTERN "*.txt")