103 lines
3.2 KiB
CMake
103 lines
3.2 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
set(CMAKE_SUPPRESS_REGENERATION true)
|
|
|
|
project(PotreeConverter LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
|
|
|
option(USE_EXTERNAL_BROTLI "" OFF)
|
|
set(EXTERNAL_BROTLI_INCLUDE_DIRS "" CACHE STRING "")
|
|
set(EXTERNAL_BROTLI_LIBRARIES "" CACHE STRING "")
|
|
|
|
#set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
|
|
|
|
#message(${PROJECT_SOURCE_DIR})
|
|
|
|
set(HEADER_FILES
|
|
./Converter/include/Attributes.h
|
|
./Converter/include/chunker_countsort_laszip.h
|
|
./Converter/include/ChunkRefiner.h
|
|
./Converter/include/ConcurrentWriter.h
|
|
./Converter/include/converter_utils.h
|
|
./Converter/include/indexer.h
|
|
./Converter/include/prototyping.h
|
|
./Converter/include/sampler_poisson.h
|
|
./Converter/include/sampler_poisson_average.h
|
|
./Converter/include/sampler_random.h
|
|
./Converter/include/structures.h
|
|
./Converter/include/Vector3.h
|
|
./Converter/include/PotreeConverter.h
|
|
./Converter/include/logger.h
|
|
./Converter/modules/LasLoader/LasLoader.h
|
|
./Converter/modules/unsuck/unsuck.hpp
|
|
)
|
|
|
|
add_executable(PotreeConverter
|
|
./Converter/src/chunker_countsort_laszip.cpp
|
|
./Converter/src/indexer.cpp
|
|
./Converter/src/main.cpp
|
|
./Converter/src/logger.cpp
|
|
./Converter/modules/LasLoader/LasLoader.cpp
|
|
./Converter/modules/unsuck/unsuck_platform_specific.cpp
|
|
${HEADER_FILES}
|
|
)
|
|
|
|
set(LASZIP_DIR "${PROJECT_SOURCE_DIR}/Converter/libs/laszip")
|
|
add_subdirectory(${LASZIP_DIR})
|
|
target_link_libraries(PotreeConverter laszip)
|
|
|
|
if (NOT USE_EXTERNAL_BROTLI)
|
|
set(BROTLI_DIR "${PROJECT_SOURCE_DIR}/Converter/libs/brotli")
|
|
add_subdirectory(${BROTLI_DIR})
|
|
target_link_libraries(PotreeConverter brotlienc-static)
|
|
target_link_libraries(PotreeConverter brotlidec-static)
|
|
else()
|
|
target_include_directories(PotreeConverter PRIVATE ${EXTERNAL_BROTLI_INCLUDE_DIRS})
|
|
target_link_libraries(PotreeConverter PRIVATE ${EXTERNAL_BROTLI_LIBRARIES})
|
|
endif()
|
|
|
|
|
|
target_include_directories(PotreeConverter PRIVATE "./Converter/include")
|
|
target_include_directories(PotreeConverter PRIVATE "./Converter/modules")
|
|
target_include_directories(PotreeConverter PRIVATE "./Converter/libs")
|
|
|
|
|
|
if (UNIX)
|
|
find_package(Threads REQUIRED)
|
|
find_package(TBB REQUIRED)
|
|
|
|
target_link_libraries(${PROJECT_NAME} Threads::Threads)
|
|
target_link_libraries(${PROJECT_NAME} tbb)
|
|
|
|
|
|
#SET(CMAKE_CXX_FLAGS "-pthread -ltbb")
|
|
endif (UNIX)
|
|
|
|
###############################################
|
|
# COPY LICENSE FILES TO BINARY DIRECTORY
|
|
###############################################
|
|
|
|
set(LICENSE_PATHS ${LASZIP_DIR}/COPYING ${PROJECT_SOURCE_DIR}/Converter/libs/json/LICENSE ${PROJECT_SOURCE_DIR}/LICENSE)
|
|
if (NOT USE_EXTERNAL_BROTLI)
|
|
list(APPEND LICENSE_PATHS ${BROTLI_DIR}/LICENSE)
|
|
endif()
|
|
|
|
foreach(LICENSE IN LISTS LICENSE_PATHS)
|
|
get_filename_component(PARENT_DIR "${LICENSE}" DIRECTORY)
|
|
get_filename_component(PARENT_NAME "${PARENT_DIR}" NAME)
|
|
set(LICENSE_NAME "${PARENT_NAME}_license.txt")
|
|
add_custom_command(
|
|
TARGET PotreeConverter POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
${LICENSE}
|
|
$<TARGET_FILE_DIR:${PROJECT_NAME}>/licenses/${LICENSE_NAME})
|
|
endforeach()
|
|
|
|
add_custom_command(
|
|
TARGET PotreeConverter POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
${PROJECT_SOURCE_DIR}/README.md
|
|
$<TARGET_FILE_DIR:${PROJECT_NAME}>/README.md)
|
|
|
|
add_compile_definitions("$<$<CONFIG:Debug>:DEBUG>") |