cmake_minimum_required(VERSION 3.30.0 FATAL_ERROR) project(LightShow VERSION 0.1.0 LANGUAGES CXX C) set(CMAKE_C_STANDARD 23) set(CMAKE_CXX_STANDARD 23) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Change this to ON if you are using something like Fleet or Neovim option(USE_COMPILE_COMMANDS "Enable compile_commands.json for LSPs" OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ${USE_COMPILE_COMMANDS}) # Set different output directories for MSVC and MinGW if (MSVC) set_property(GLOBAL PROPERTY VS_STARTUP_PROJECT LightShow) # Startup Project set(OUTPUT_BIN "${CMAKE_BINARY_DIR}/msvc/bin") set(OUTPUT_LIB "${CMAKE_BINARY_DIR}/msvc/lib") elseif (MINGW) set(OUTPUT_BIN "${CMAKE_BINARY_DIR}/mingw/bin") set(OUTPUT_LIB "${CMAKE_BINARY_DIR}/mingw/lib") else() set(OUTPUT_BIN "${CMAKE_BINARY_DIR}/bin") set(OUTPUT_LIB "${CMAKE_BINARY_DIR}/lib") endif() set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_BIN}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_BIN}) # Shared libraries set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_LIB}) # Static libraries add_subdirectory(src/interface/launchpad) add_subdirectory(src/interface/net) add_subdirectory(src/main) # cmake --install if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Install path prefix" FORCE) message(WARNING "No install path set, defaulting to ${CMAKE_INSTALL_PREFIX}") endif() install(TARGETS LightShow launchpad net-interface RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) install(FILES src/interface/launchpad/launchpad.h src/interface/net/interface.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/LightShow )