new_docker_build.sh gains Group 12 (212 GUI/Data plugins); fixes LtsUtilsGuiDds visibility (LTO-stripped exports), LtsProjectionWorkstation unity name shadow, 6 unity-off dirs (dup file-scope statics, ddsftc INTERFACE sources) and reconfigures BUILD_FILTERMANAGEMENT/BUILD_PLUGINS_SERVICEMONITOR=ON
78 lines
3.0 KiB
CMake
Executable File
78 lines
3.0 KiB
CMake
Executable File
#
|
|
# $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
|
|
)
|