test_pie/CMakeLists.txt

248 lines
8.5 KiB
CMake
Raw Normal View History

2023-09-14 11:12:02 +02:00
cmake_minimum_required(VERSION 3.1)
cmake_policy(SET CMP0048 NEW)
cmake_policy(SET CMP0072 NEW)
project(test_PIE)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
set(CMAKE_CXX_STANDARD 14)
set(PROJECT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR})
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR})
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
endif()
function(add_warnings_to_target TARGET)
target_compile_options(${TARGET} PRIVATE -Wall -Wextra -Wpedantic -Wno-unused-function -Wno-int-in-bool-context -Wno-unused-parameter)
endfunction()
#
# Dependencies
#
find_package(dlib REQUIRED)
find_package(FBX QUIET)
find_package(OpenGL REQUIRED)
find_package(OpenMP)
find_package(OpenCL REQUIRED)
find_package(OpenCV REQUIRED)
find_package(SuiteSparse)
#
# Options for non-deployed dependencies
#
##############################################################################
# SuiteSparse
##############################################################################
if(SUITESPARSE_FOUND)
add_definitions(-DHAVE_CHOLMOD)
include_directories(${SUITESPARSE_INCLUDE_DIRS})
endif(SUITESPARSE_FOUND)
##############################################################################
##############################################################################
# opencl
##############################################################################
if(OpenCL_FOUND)
add_definitions(-DHAVE_OCL)
add_compile_definitions(CL_TARGET_OPENCL_VERSION=120)
include_directories(external/opencl/include)
add_subdirectory(external/opencl)
endif()
##############################################################################
##############################################################################
# OpenMP
##############################################################################
if(OpenMP_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
if(MSVC)
add_definitions(/arch:SSE)
endif(MSVC)
set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS_INIT} -fopenmp)
endif()
##############################################################################
#
# Options for deployed dependencies
#
##############################################################################
# GLFW
##############################################################################
if (NOT EMSCRIPTEN)
set(GLFW_SOURCE_DIR "external/glfw")
set(BUILD_SHARED_LIBS OFF CACHE BOOL "")
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "")
set(GLFW_BUILD_TESTS OFF CACHE BOOL "")
set(GLFW_BUILD_DOCS OFF CACHE BOOL "")
set(GLFW_INSTALL OFF CACHE BOOL "")
add_subdirectory(${GLFW_SOURCE_DIR})
include_directories(${GLFW_SOURCE_DIR}/include
${GLFW_SOURCE_DIR}/deps)
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s USE_GLFW=3")
endif()
##############################################################################
##############################################################################
# GLEW
##############################################################################
if (NOT EMSCRIPTEN)
set(GLEW_SOURCE_DIR "external/glew")
include_directories(${GLEW_SOURCE_DIR}/include)
add_definitions(-DGLEW_STATIC)
add_library(glew STATIC
${GLEW_SOURCE_DIR}/src/glew.c
${GLEW_SOURCE_DIR}/include)
target_link_libraries(glew ${GLFW_LIBRARIES})
endif()
##############################################################################
##############################################################################
# imgui
##############################################################################
set(IMGUI_SOURCE_DIR "external/imgui")
include_directories(${IMGUI_SOURCE_DIR})
add_subdirectory(${IMGUI_SOURCE_DIR})
##############################################################################
##############################################################################
# pmp
##############################################################################
set(PMP_SOURCE_DIR "external/pmp")
include_directories(external)
add_subdirectory(external/pmp)
##############################################################################
##############################################################################
# stb_image
##############################################################################
add_subdirectory(external/stb_image)
##############################################################################
##############################################################################
# alglib
##############################################################################
add_subdirectory(external/alglib-3.16.0)
##############################################################################
##############################################################################
# exact_ccd
##############################################################################
add_subdirectory(external/exact_ccd)
##############################################################################
##############################################################################
# tiny xml
##############################################################################
add_definitions(-DTIXML_USE_STL)
add_subdirectory(external/tinyxml)
##############################################################################
##############################################################################
# rply
##############################################################################
add_subdirectory(external/rply)
##############################################################################
##############################################################################
# MRF
##############################################################################
add_subdirectory(external/MRF)
##############################################################################
##############################################################################
# fbxsdk
##############################################################################
include_directories(external/fbxsdk/include)
if(WIN32)
find_file(FBX_LIBRARY libfbxsdk.lib ./external/fbxsdk/lib/)
find_file(FBX_DYNAMIC_LIBRARY libfbxsdk.dll ./external/fbxsdk/lib/)
elseif(APPLE)
find_package(ZLIB REQUIRED)
find_package(LibXml2 REQUIRED)
find_package(Iconv REQUIRED)
find_library(CORE_FOUNDATION CoreFoundation REQUIRED)
if(${CMAKE_OSX_ARCHITECTURES} STREQUAL "arm64")
message(${CMAKE_OSX_ARCHITECTURES})
find_file(FBX_LIBRARY libfbxsdk.a external/fbxsdk/lib/apple/arm64/)
find_file(FBX_DYNAMIC_LIBRARY libfbxsdk.dylib external/fbxsdk/lib/apple/arm64/)
else()
message(${CMAKE_OSX_ARCHITECTURES})
find_file(FBX_LIBRARY libfbxsdk.a external/fbxsdk/lib/apple/x86_64)
find_file(FBX_DYNAMIC_LIBRARY libfbxsdk.dylib external/fbxsdk/lib/apple/x86_64/)
endif()
else()
find_file(FBX_LIBRARY libfbxsdk.a ./external/fbxsdk/lib/)
find_file(FBX_DYNAMIC_LIBRARY libfbxsdk.so ./external/fbxsdk/lib/)
endif()
find_file(FBX_INCLUDE fbxsdk.h ./external/fbxsdk/include/)
if (FBX_LIBRARY STREQUAL "" OR FBX_INCLUDE STREQUAL "")
message(WARNING "FBXSDK NOT found in external/fbxsdk/. Please make sure to copy libfbxsdk.lib in external/fbxsdk/lib/ and the header files to external/fbxsdk/include/ if you want to write fbx files!")
else()
add_definitions(-DHAVE_FBX -DFBXSDK_SHARED)
endif()
##############################################################################
#
# Source
#
##############################################################################
# source files
##############################################################################
include_directories(${CMAKE_SOURCE_DIR}/src/)
add_subdirectory(src)
##############################################################################
#
# Copy scripts, config files and binaries
#
##############################################################################
# copy data folder
##############################################################################
# file(COPY ./data/ DESTINATION ${PROJECT_BINARY_DIR})
##############################################################################
##############################################################################
# copy exiftool
##############################################################################
file(COPY ./external/exiftool/ DESTINATION ${PROJECT_BINARY_DIR}/exiftool)
##############################################################################