【问题标题】:Conan.io use on embeddeds Software developmentConan.io 在嵌入式软件开发上的使用
【发布时间】:2021-01-26 10:28:28
【问题描述】:

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

我们正在开发汽车嵌入式软件。通常,这包括 COTS 库的集成,最重要的是用于通信和操作系统,如 AUTOSAR。这些在源代码中提供。典型的 uC 是 Renesas RH850、RL78 或来自NXPCypressInfinion 等的类似设备。我们使用gnumake (MinGW)、Jenkins 进行 CI,并拥有自己的 EclipseCDT 发行版作为标准化 IDE。

我的第一个问题:

那些第 3 方组件通常充满了条件编译,以进行正确的编译时配置。使用这种方法,代码和生成的二进制文件在大小和运行时行为方面都得到了优化。

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

一句话:我们有很多编译时配置——建立一个基于 JFrog / Conan 的环境有什么好的方法?与每个项目的源代码保持一致?

与柯南的外部参照:

有没有办法维护来自柯南的交叉引用信息?我正在寻找类似“项目 xxx 正在使用库 lll 版本 vvv”的内容。通过这种方式,我们将能够在检测到问题时自动识别库的其他“用户”。

非常感谢, 斯蒂芬

【问题讨论】:

  • 嗨@Stefan,我已经回答了第一个问题,但第二个问题并不完全清楚。项目或包明确声明它们正在使用的版本,例如requires = "pkg/version"。请澄清你的意思,谢谢!

标签: embedded conan automotive


【解决方案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'])

所以柯南能够实现任何编译时配置。这并不意味着您需要始终从源代码构建。构建的参数化基本上是:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    相关资源
    最近更新 更多