# # $Id$ # $HeadURL$ # $Author$ # set(CMAKE_AUTOMOC ON) # DataPluginInterface ADD_LIBRARY(DataPluginInterface SHARED ${CMAKE_CURRENT_SOURCE_DIR}/data_plugin_interface.h ${CMAKE_CURRENT_SOURCE_DIR}/data_plugin_interface.cpp ) TARGET_INCLUDE_DIRECTORIES(DataPluginInterface PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..) TARGET_LINK_LIBRARIES(DataPluginInterface PUBLIC Qt6::Core) # GuiPluginInterface ADD_LIBRARY(GuiPluginInterface SHARED ${CMAKE_CURRENT_SOURCE_DIR}/gui_plugin_interface.h ${CMAKE_CURRENT_SOURCE_DIR}/gui_plugin_interface.cpp ) TARGET_INCLUDE_DIRECTORIES(GuiPluginInterface PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..) TARGET_LINK_LIBRARIES(GuiPluginInterface PUBLIC Qt6::Core LtsWidgets ProjectConfig LtsAppDescriptor LtsUtilsCore) # projectPluginInterface ADD_LIBRARY(ProjectPluginInterface SHARED ${CMAKE_CURRENT_SOURCE_DIR}/project_plugin_interface.h ${CMAKE_CURRENT_SOURCE_DIR}/project_plugin_interface.cpp ) TARGET_INCLUDE_DIRECTORIES(ProjectPluginInterface PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..) TARGET_LINK_LIBRARIES(ProjectPluginInterface PUBLIC Qt6::Core) # stylePluginInterface ADD_LIBRARY(StylePluginInterface SHARED ${CMAKE_CURRENT_SOURCE_DIR}/style_plugin_interface.h ${CMAKE_CURRENT_SOURCE_DIR}/style_plugin_interface.cpp ) TARGET_INCLUDE_DIRECTORIES(StylePluginInterface PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..) TARGET_LINK_LIBRARIES(StylePluginInterface PUBLIC Qt6::Core) # record_replay_plugin ADD_LIBRARY(RecordReplayPlugin SHARED ${CMAKE_CURRENT_SOURCE_DIR}/record_replay_plugin.h ${CMAKE_CURRENT_SOURCE_DIR}/record_replay_plugin.cpp ) TARGET_INCLUDE_DIRECTORIES(RecordReplayPlugin PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..) TARGET_LINK_LIBRARIES(RecordReplayPlugin PUBLIC Qt6::Core) # Topic Replay Interface ADD_LIBRARY(TopicReplayInterface SHARED ${CMAKE_CURRENT_SOURCE_DIR}/topic_replay_interface.h ${CMAKE_CURRENT_SOURCE_DIR}/topic_replay_interface.cpp ) TARGET_INCLUDE_DIRECTORIES(TopicReplayInterface PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_BINARY_DIR}/Lts/Common/TopicEditorBase # topiceditorbase_export.h ) TARGET_LINK_LIBRARIES(TopicReplayInterface PUBLIC Qt6::Core TopicEditorBase) # These interface base classes (e.g. DataPluginBase::Plugin) are Q_OBJECT classes. The top-level # CMAKE_CXX_VISIBILITY_PRESET hidden compiles their Q_OBJECT meta symbols (staticMetaObject/vtable/ # qt_metacall/typeinfo) as GLOBAL HIDDEN, so they are not exported from the .so. A cross-DSO # subclass (e.g. AsbDataPlugin) then fails with "undefined reference to ...::staticMetaObject". # Compile these interface libs with default visibility so the meta symbols are exported to consumers # (the legacy build, without LTO, exported them). This only widens the export surface of these tiny # interface libs; it changes no runtime behaviour. set_target_properties( DataPluginInterface GuiPluginInterface ProjectPluginInterface StylePluginInterface RecordReplayPlugin TopicReplayInterface PROPERTIES CXX_VISIBILITY_PRESET default CXX_VISIBILITY_INLINES_HIDDEN OFF )