-# Copyright (C) 2009-2014 EDF R&D
+# Copyright (C) 2009-2019 EDF R&D
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
"""
import os
-from gener import Component, Invalid
-from cpp_tmpl import initService, cxxService, hxxCompo, cxxCompo
-from cpp_tmpl import exeCPP, cmake_src_compo_cpp
-from yacstypes import corba_rtn_type
+from module_generator.gener import Component, Invalid
+from module_generator.cpp_tmpl import initService, cxxService, hxxCompo, cxxCompo
+from module_generator.cpp_tmpl import exeCPP, cmake_src_compo_cpp
+from module_generator.yacstypes import corba_rtn_type
try:
from string import Template
except:
- from compat import Template,set
+ from module_generator.compat import Template,set
class CPPComponent(Component):
"""
:param services: the list of services (:class:`Service`) of the component.
:param kind: If it is given and has the value "exe", the component will be built as a standalone
component (executable or shell script). The default is to build the component as a dynamic library.
- :param libs: list of the additional libraries. see :class:'Library'
+ :param libs: list of the additional libraries. see *Library* class.
If you want to add "libmylib.so", installed in "/path/to/lib" you should use:
- libs=[Library(name="mylib", path="/path/to/lib"]
+ libs=[Library(name="mylib", path="/path/to/lib")]
For more advanced features, see the documentation of cmake / FIND_LIBRARY
- :param rlibs: semicolon-separated list specifying the rpath to use in installed targets
+ :param rlibs: space-separated list specifying the rpath to use in installed targets
:param includes: additional include directories, separated by spaces.
:param sources: gives all the external source files to add in the compilation step (list of paths).
:param exe_path: is only used when kind is "exe" and gives the path to the standalone component.
:param interfacedefs: can be used to add idl definitions (or includes of idl files) into the generated idl of the module.
:param inheritedinterface: can be used to make the component inherit an extra idl interface that has been included through
the *idls* and *interfacedefs* parameters. See the cppgui1 example for how to use these last parameters.
- :param addmethods: is a C++ specific parameter that can be used to redefine a component method (DumpPython for example). This
+ :param addedmethods: is a C++ specific parameter that can be used to redefine a component method (DumpPython for example). This
parameter is a string that must contain the definition and implementation code of the method. See the cppgui1 example
for how to use it.
:param calciumextendedinterface: if you want to use the Calcium extended interface for C++ as defined by the header CalciumInterface.hxx
return a dict where key is the file name and value is the file content
"""
(cmake_text, cmake_vars) = self.additionalLibraries()
+ # DSC_libs are needed for datastream ports only
+ DSC_libs = """${KERNEL_SalomeDSCContainer}
+ ${KERNEL_SalomeDSCSuperv}
+ ${KERNEL_SalomeDatastream}
+ ${KERNEL_SalomeDSCSupervBasic}
+ ${KERNEL_CalciumC}
+ """
+ cmake_vars = DSC_libs + cmake_vars
cxxfile = "%s.cxx" % self.name
hxxfile = "%s.hxx" % self.name
if self.kind == "exe":