Updating simulation cmake to install headers and so file if requested using a flag.

This commit is contained in:
vidurvij-apptronik
2024-10-23 14:59:33 -05:00
parent ed7655cf97
commit f6e4666624
+31 -3
View File
@@ -41,12 +41,16 @@ if(APPLE)
enable_language(OBJCXX) enable_language(OBJCXX)
endif() endif()
if(NOT DEFINED expose_headers)
endif()
option(SIMULATE_BUILD_EXECUTABLE "Build the simulate executable binary." ON) option(SIMULATE_BUILD_EXECUTABLE "Build the simulate executable binary." ON)
option(SIMULATE_GLFW_DYNAMIC_SYMBOLS "Whether to resolve GLFW symbols dynamically." OFF) option(SIMULATE_GLFW_DYNAMIC_SYMBOLS "Whether to resolve GLFW symbols dynamically." OFF)
# Check if we are building as standalone project. # Check if we are building as standalone project.
set(SIMULATE_STANDALONE OFF) set(SIMULATE_STANDALONE OFF)
set(_INSTALL_SIMULATE ON) set(_INSTALL_SIMULATE ON)
set(EXPOSE_HEADERS OFF)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(SIMULATE_STANDALONE ON) set(SIMULATE_STANDALONE ON)
# If standalone, do not install the samples. # If standalone, do not install the samples.
@@ -128,7 +132,11 @@ add_library(mujoco::libsimulate ALIAS libsimulate)
target_sources( target_sources(
libsimulate libsimulate
PUBLIC simulate.h PUBLIC
simulate.h
platform_ui_adapter.h
glfw_adapter.h
glfw_dispatch.h
PRIVATE simulate.cc array_safety.h PRIVATE simulate.cc array_safety.h
) )
target_include_directories(libsimulate PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(libsimulate PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
@@ -223,6 +231,14 @@ if(SIMULATE_BUILD_EXECUTABLE)
set(_INSTALL_SIMULATE OFF) set(_INSTALL_SIMULATE OFF)
endif() endif()
target_link_libraries(libsimulate
PUBLIC
lodepng
mujoco::platform_ui_adapter
mujoco::mujoco
PRIVATE
# Add any private dependencies here
)
if(_INSTALL_SIMULATE) if(_INSTALL_SIMULATE)
include(TargetAddRpath) include(TargetAddRpath)
@@ -246,9 +262,21 @@ if(SIMULATE_BUILD_EXECUTABLE)
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT simulate LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT simulate
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT simulate ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT simulate
BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT simulate BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT simulate
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT simulate PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" COMPONENT simulate
) )
# Specify public headers for libsimulate
if(SIMULATE_EXPOSE_HEADERS)
set_target_properties(libsimulate PROPERTIES PUBLIC_HEADER "simulate.h;platform_ui_adapter.h;glfw_adapter.h;glfw_dispatch.h")
install(
TARGETS libsimulate
EXPORT ${PROJECT_NAME}
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT simulate
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/simulate" COMPONENT simulate
)
endif()
if(NOT MUJOCO_SIMULATE_USE_SYSTEM_GLFW) if(NOT MUJOCO_SIMULATE_USE_SYSTEM_GLFW)
# We downloaded GLFW. Depending if it is a static or shared LIBRARY we might # We downloaded GLFW. Depending if it is a static or shared LIBRARY we might
# need to install it. # need to install it.
@@ -260,7 +288,7 @@ if(SIMULATE_BUILD_EXECUTABLE)
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT simulate RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT simulate
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT simulate LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT simulate
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT simulate ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT simulate
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT simulate PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" COMPONENT simulate
) )
endif() endif()
endif() endif()