ProjectCommon.cmake 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # Centralized CMake settings used across the V-Gears project.
  2. # Build verbosity default (can be overridden by caller)
  3. if(NOT DEFINED CMAKE_VERBOSE_MAKEFILE)
  4. set(CMAKE_VERBOSE_MAKEFILE OFF CACHE BOOL "Enable verbose makefile output" FORCE)
  5. endif()
  6. # C++ standard and basic compile settings
  7. if(NOT DEFINED CMAKE_CXX_STANDARD)
  8. set(CMAKE_CXX_STANDARD 14)
  9. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  10. endif()
  11. # Produce position independent code by default where relevant
  12. set(CMAKE_POSITION_INDEPENDENT_CODE ON)
  13. # Debug postfix for libraries
  14. if(NOT DEFINED CMAKE_DEBUG_POSTFIX)
  15. set(CMAKE_DEBUG_POSTFIX "_d")
  16. endif()
  17. # Set output directories for binaries and libraries
  18. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
  19. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/lib)
  20. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/lib)
  21. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin_debug)
  22. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin_debug/lib)
  23. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin_debug/lib)
  24. # Enable folders in IDEs like Visual Studio
  25. set_property(GLOBAL PROPERTY USE_FOLDERS ON)
  26. # Make custom CMake modules discoverable
  27. list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake")
  28. # Create directory for generated headers
  29. file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/generated")
  30. ## Helper: install default GNUInstallDirs if not available
  31. include(GNUInstallDirs OPTIONAL)