cmake_minimum_required(VERSION 3.7) # https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_DEPLOYMENT_TARGET.html set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment version") project(VCVRack CXX) set(CMAKE_CXX_STANDARD 14) set(RACK_APP rack) set(RACK_GIT_REV "UNKNOWN") find_package(Git) if(GIT_FOUND) execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE RACK_GIT_REV ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE ) else() message(WARNING "Git cmd not found") endif() set(RACK_BUILD_VERSION "1.dev.${RACK_GIT_REV}") message( STATUS "build ${RACK_APP} version '${RACK_BUILD_VERSION}'") include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) conan_basic_setup() file(GLOB_RECURSE SOURCES src/*.cpp) file(GLOB_RECURSE HEADERS include/*.hpp) source_group("Header Files" FILES ${HEADERS}) add_executable(${RACK_APP} ${SOURCES}) target_compile_definitions(${RACK_APP} PRIVATE VERSION=${RACK_BUILD_VERSION}) if (MINGW) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) target_compile_definitions(${RACK_APP} PRIVATE _USE_MATH_DEFINES ARCH_WIN) set_target_properties(${RACK_APP} PROPERTIES LINK_FLAGS "-mwindows") endif () if (MSVC) # https://docs.microsoft.com/en-us/cpp/build/reference/compiler-options-listed-by-category?view=vs-2019 # /O2 /arch:AVX2 --> https://docs.microsoft.com/de-de/cpp/build/reference/arch-x64?view=vs-2019 target_compile_definitions(${RACK_APP} PRIVATE _CRT_SECURE_NO_WARNINGS _USE_MATH_DEFINES ARCH_WIN) else () set_target_properties(${RACK_APP} PROPERTIES COMPILE_FLAGS "-march=nocona -funsafe-math-optimizations") endif () if (CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)") if (CMAKE_SYSTEM_NAME STREQUAL "Linux") target_compile_definitions(${RACK_APP} PRIVATE ARCH_LIN) set_target_properties(${RACK_APP} PROPERTIES LINK_FLAGS "-rdynamic") endif() set_target_properties(${RACK_APP} PROPERTIES COMPILE_FLAGS "-Wall -Wextra -Wno-unused-parameter") elseif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") target_compile_definitions(${RACK_APP} PRIVATE ARCH_MAC) set_target_properties(${RACK_APP} PROPERTIES COMPILE_FLAGS "-Wsuggest-override") set_target_properties(${RACK_APP} PROPERTIES LINK_FLAGS "-export_dynamic -undefined dynamic_lookup") endif () target_include_directories(${RACK_APP} PRIVATE include) conan_target_link_libraries(${RACK_APP}) if (MINGW) target_link_libraries(${RACK_APP} "shlwapi" "imagehlp") endif ()