248 lines
8.5 KiB
CMake
248 lines
8.5 KiB
CMake
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)
|
|
##############################################################################
|
|
|