Conan.io在嵌入式软件开发中的使用

时间:2020-10-12 05:38:35

标签: embedded conan automotive

请允许我在我们的环境中的Conan.io中使用两个问题:

我们正在开发汽车嵌入式软件。通常,这包括COTS库的集成,其中大多数用于通信和OS(例如AUTOSAR)。这些在源代码中提供。典型的uC是瑞萨电子RH850,RL78或NXPCypressInfinion等的类似设备。我们使用Jenkins的gnumake(MinGW)for CI,并拥有自己的EclipseCDT发行版作为标准化IDE。

我的第一个问题:

那些第三方组件通常充满条件编译以进行正确的编译时配置。通过这种方法,可以对代码以及由此产生的二进制文件进行大小和运行时行为的优化。

除了这些组件外,我们当然还有用于不同目的的内部可重用组件。此处的编译时配置不如上面的示例那么繁重,但仍然存在。

一句话:我们有很多编译时配置-哪种是建立基于JFrog / Conan的环境的好方法?停留在每个项目的源代码中?

使用柯南的XRef:

有没有办法维护来自柯南的交叉引用信息?我正在寻找类似“ xxx项目正在使用Library lll版本vvv”的内容。这样,如果发现问题,我们将能够自动识别库的其他“用户”。

非常感谢, 斯蒂芬

1 个答案:

答案 0 :(得分:1)

柯南食谱基于python,因此非常灵活,能够实现您可能需要的任何条件逻辑。

例如,libxslt recipe in ConanCenter包含以下内容:

def build(self):
    self._patch_sources()
    if self._is_msvc:
        self._build_windows()
    else:
        self._build_with_configure()

在此示例之后,自动工具构建包含如下代码:

def _build_with_configure(self):
        env_build = AutoToolsBuildEnvironment(self, win_bash=tools.os_info.is_windows)
        full_install_subfolder = tools.unix_path(self.package_folder)
        # fix rpath
        if self.settings.os == "Macos":
            tools.replace_in_file(os.path.join(self._full_source_subfolder, "configure"), r"-install_name \$rpath/", "-install_name ")
        configure_args = ['--with-python=no', '--prefix=%s' % full_install_subfolder]
        if self.options.shared:
            configure_args.extend(['--enable-shared', '--disable-static'])
        else:
            configure_args.extend(['--enable-static', '--disable-shared'])

因此Conan能够实现任何编译时配置。这并不意味着您总是需要从源代码构建。构建的参数化基本上是:

  • 设置:用于“项目范围”配置,例如OS或体系结构。设置值通常对所有依赖项都具有相同的值
  • 选项:用于软件包的特定配置,例如静态或共享的库。每个包装都可以有自己的价值,与其他包装不同。

您可以使用设置和选项为程序包实现可变性模型,构建最常用的二进制文件。当请求给定的变体时,Conan会错误地指出该配置没有预编译的二进制文件。用户可以指定--build=missing来从源代码构建它们。

相关问题