49 lines
1.6 KiB
CMake
49 lines
1.6 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(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)
|
||
|
message(FATAL_ERROR "You must specify an installation path using -DCMAKE_INSTALL_PREFIX=<path>")
|
||
|
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
|
||
|
)
|