67 lines
2.8 KiB
CMake
67 lines
2.8 KiB
CMake
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 -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)
|