Files
control/CMakeLists.txt
2026-02-20 21:29:36 -05:00

94 lines
2.2 KiB
CMake

cmake_minimum_required(VERSION 3.15)
project(control LANGUAGES C CXX)
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
find_package(Eigen3 REQUIRED)
find_package(librpc REQUIRED)
find_package(flatbuffers REQUIRED)
find_package(spdlog REQUIRED)
find_package(sentry REQUIRED)
find_package(crashpad REQUIRED)
file(GLOB_RECURSE COMMON_SOURCES
src/flatbuffers/*.cpp
src/actuators/*.cpp
src/Module.cpp
src/Hub.cpp
src/ModuleFactory.cpp
src/libcontrol.cpp
)
# C API Library
if(WIN32)
add_library(c_control SHARED
src/lib_c_control.cpp
${COMMON_SOURCES}
control.def
)
target_compile_definitions(c_control PRIVATE CONTROL_EXPORTS)
else()
add_library(c_control SHARED
src/lib_c_control.cpp
${COMMON_SOURCES}
)
endif()
target_include_directories(c_control PUBLIC include)
target_link_libraries(c_control
PUBLIC
spdlog::spdlog
PRIVATE
librpc::librpc
Eigen3::Eigen
sentry-native::sentry-native
sentry-crashpad::sentry-crashpad
)
set_property(TARGET c_control PROPERTY CXX_STANDARD 23)
install(TARGETS c_control
EXPORT controlTargets
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
# C++ API Library
if(WIN32)
add_library(control SHARED
${COMMON_SOURCES}
)
target_compile_definitions(control PRIVATE CONTROL_EXPORTS)
set_target_properties(control PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
else()
add_library(control SHARED
${COMMON_SOURCES}
)
endif()
target_include_directories(control PUBLIC include)
target_link_libraries(control
PUBLIC
spdlog::spdlog
PRIVATE
librpc::librpc
Eigen3::Eigen
sentry-native::sentry-native
sentry-crashpad::sentry-crashpad
)
set_property(TARGET control PROPERTY CXX_STANDARD 23)
install(TARGETS control
EXPORT controlTargets
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
install(DIRECTORY include/ DESTINATION include)