52 lines
1.8 KiB
CMake
52 lines
1.8 KiB
CMake
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
|
|
)
|