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) ##############################################################################