Lightshow/CMakeLists.txt

52 lines
1.8 KiB
CMake
Raw Normal View History

2025-03-11 12:29:20 -06:00
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
2025-03-11 12:29:20 -06:00
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}")
2025-03-11 12:29:20 -06:00
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
)