1

我对 DSP 开发这个话题很陌生。我2个月前在高通论坛上问过这个问题,但没有得到任何答复。

目前我正在参与将我们的部分代码移植到高通公司制造的 Hexagon DSP 上。

我们的代码库编译为一个共享库和一个基于 GoogleTest 的单元测试套件。

我已经使用 hexagon-clang 成功编译了该库,它是 Hexagon SDK 3.5.2 的一部分。但是,由于标准库支持有限,hexagon-clang 不能编译 gtest。

我必须有哪些选项来运行单元测试?

更新

  1. 我们的代码是用 CMake 配置的。它使用Hexagon_toolchain.cmake,随 SDK 一起提供。相关的 CMake 命令行开关是:-DV=hexagon_Debug_toolv83_v66 -DCMAKE_TOOLCHAIN_FILE=%HEXAGON_SDK_ROOT%\build\cmake\Hexagon_Toolchain.cmake -DQURT_OS=1 -DHEXAGON_CMAKE_ROOT=%HEXAGON_SDK_ROOT%\build\cmake
  2. 在 GTest hexagon-clang 编译期间找不到头文件regex.h。事实上,这个文件只能在由 Hexagon SDK 安装的 Android NDK 中找到。我尝试为 hexagon-clang 设置包含路径,但其他头文件出现了其他错误。我已经停止了这个练习,因为我怀疑 Android NDK 的“挑选”片段是构建应该在 DSP 上运行的应用程序的正确方法。
4

1 回答 1

1

解决了。

  1. 关闭了两个 GTest 选项(GTEST_HAS_POSIX_REGTEST_HAS_STREAM_REDIRECTION):
    ...
    if(HEXAGON)
        add_compile_definitions(GTEST_HAS_POSIX_RE=0 GTEST_HAS_STREAM_REDIRECTION=0)
    endif()

    add_subdirectory(gtest)
    ....
  1. 向 GoogleTest 添加了一些代码以支持 QURT。不幸的是,我无法发布这些更改,但是,它们很简单。GoogleTest 库包含一个操作系统抽象层,它缺少 QURT 支持。我刚刚跟踪了编译器的错误消息并添加了缺失的函数。在该练习中,我发现了以下 3 个问题:
  • getcwdQURT POSIX 支持库中的函数总是返回空字符串。
  • QURT中没有任何write功能,所以我使用fwrite(有趣的read是存在)对其进行了模拟。
  • argvinmain总是NULL,我不得不打电话给重载InitGoogleTest()
于 2020-10-21T11:07:00.450 回答