cmake_minimum_required(VERSION 3.12) project(CGDI-4) # Print the build type if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release" FORCE) endif() message(STATUS "cmake build type: ${CMAKE_BUILD_TYPE}") ### Configure the compiler # This is a basic, decent setup that should do something sane on most compilers if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") # using Clang (linux or apple) or GCC message("Using clang/gcc compiler flags") SET(BASE_CXX_FLAGS "-std=c++11 -Wall -Wextra") SET(DISABLED_WARNINGS " -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-deprecated-declarations -Wno-missing-braces -Wno-unused-private-field") SET(TRACE_INCLUDES " -H -Wno-error=unused-command-line-argument") if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") message("Setting clang-specific options") SET(BASE_CXX_FLAGS "${BASE_CXX_FLAGS} -ferror-limit=3 -fcolor-diagnostics") SET(CMAKE_CXX_FLAGS_DEBUG "-g3 -fsanitize=address -fno-limit-debug-info") elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") message("Setting gcc-specific options") SET(BASE_CXX_FLAGS "${BASE_CXX_FLAGS} -fmax-errors=5") SET(CMAKE_CXX_FLAGS_DEBUG "-g3") SET(DISABLED_WARNINGS "${DISABLED_WARNINGS} -Wno-maybe-uninitialized -Wno-format-zero-length -Wno-unused-but-set-parameter -Wno-unused-but-set-variable") endif() SET(CMAKE_CXX_FLAGS "${BASE_CXX_FLAGS} ${DISABLED_WARNINGS}") SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -march=native -DNDEBUG") elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") # using Visual Studio C++ message("Using Visual Studio compiler flags") set(BASE_CXX_FLAGS "${BASE_CXX_FLAGS} /W4") set(BASE_CXX_FLAGS "${BASE_CXX_FLAGS} /MP") # parallel build SET(DISABLED_WARNINGS "${DISABLED_WARNINGS} /wd\"4267\"") # ignore conversion to smaller type (fires more aggressively than the gcc version, which is annoying) SET(DISABLED_WARNINGS "${DISABLED_WARNINGS} /wd\"4244\"") # ignore conversion to smaller type (fires more aggressively than the gcc version, which is annoying) SET(DISABLED_WARNINGS "${DISABLED_WARNINGS} /wd\"4305\"") # ignore truncation on initialization SET(CMAKE_CXX_FLAGS "${BASE_CXX_FLAGS} ${DISABLED_WARNINGS}") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd") add_definitions(/D "_CRT_SECURE_NO_WARNINGS") add_definitions(-DNOMINMAX) add_definitions(-D_USE_MATH_DEFINES) else() # unrecognized message( FATAL_ERROR "Unrecognized compiler [${CMAKE_CXX_COMPILER_ID}]" ) endif() # == Deps add_subdirectory(deps/geometry-central) add_subdirectory(deps/polyscope) # == Build our project stuff add_executable(displayOBJ displayOBJ) target_link_libraries(displayOBJ polyscope geometry-central)