运行 是否可以使用 Hexagon SDK 进行基于 GoogleTest 的单元测试?
Is it possible to run GoogleTest - based unit-tests with Hexagon SDK?
我对 DSP 开发这个话题还很陌生。我2个月前在高通论坛上问过这个问题,但没有得到任何答复。
目前我正在参与将我们的部分代码移植到高通制造的 Hexagon DSP。
我们的代码库编译成共享库和基于 GoogleTest 的单元测试套件。
我已经使用 hexagon-clang 成功编译了库,它是 Hexagon SDK 3.5.2 的一部分。然而,由于标准库支持有限,hexagon-clang 不编译 gtest。
运行 单元测试我有什么选择?
更新.
- 我们的代码是用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
- 在编译 GTest hexagon-clang 期间找不到头文件
regex.h
。事实上,这个文件只能在 Hexagon SDK 安装的 Android NDK 中找到。我试过为 hexagon-clang 设置包含路径,但其他头文件出现其他错误。我已经停止了这个练习,因为我怀疑 Android NDK 的“挑选”片段是否是构建应该 运行 在 DSP 上的应用程序的正确方法。
已解决。
- 关闭了两个 GTest 选项(
GTEST_HAS_POSIX_RE
和 GTEST_HAS_STREAM_REDIRECTION
):
...
if(HEXAGON)
add_compile_definitions(GTEST_HAS_POSIX_RE=0 GTEST_HAS_STREAM_REDIRECTION=0)
endif()
add_subdirectory(gtest)
....
- 向 GoogleTest 添加了一些代码以支持 QURT。不幸的是,我无法发布这些更改,但是,它们很简单。 GoogleTest 库包含一个 OS 抽象层,它缺少 QURT 支持。我只是按照编译器的错误消息添加了缺失的函数。
在那次练习中,我发现了以下 3 个问题:
getcwd
QURT POSIX 支持库中的函数总是返回空字符串。
- QURT 中没有
write
函数,所以我使用 fwrite
模拟了它(有趣的是 read
存在)。
argv
在 main
中总是 NULL
,我不得不调用重载的 InitGoogleTest()
.
我对 DSP 开发这个话题还很陌生。我2个月前在高通论坛上问过这个问题,但没有得到任何答复。
目前我正在参与将我们的部分代码移植到高通制造的 Hexagon DSP。
我们的代码库编译成共享库和基于 GoogleTest 的单元测试套件。
我已经使用 hexagon-clang 成功编译了库,它是 Hexagon SDK 3.5.2 的一部分。然而,由于标准库支持有限,hexagon-clang 不编译 gtest。
运行 单元测试我有什么选择?
更新.
- 我们的代码是用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
- 在编译 GTest hexagon-clang 期间找不到头文件
regex.h
。事实上,这个文件只能在 Hexagon SDK 安装的 Android NDK 中找到。我试过为 hexagon-clang 设置包含路径,但其他头文件出现其他错误。我已经停止了这个练习,因为我怀疑 Android NDK 的“挑选”片段是否是构建应该 运行 在 DSP 上的应用程序的正确方法。
已解决。
- 关闭了两个 GTest 选项(
GTEST_HAS_POSIX_RE
和GTEST_HAS_STREAM_REDIRECTION
):
...
if(HEXAGON)
add_compile_definitions(GTEST_HAS_POSIX_RE=0 GTEST_HAS_STREAM_REDIRECTION=0)
endif()
add_subdirectory(gtest)
....
- 向 GoogleTest 添加了一些代码以支持 QURT。不幸的是,我无法发布这些更改,但是,它们很简单。 GoogleTest 库包含一个 OS 抽象层,它缺少 QURT 支持。我只是按照编译器的错误消息添加了缺失的函数。 在那次练习中,我发现了以下 3 个问题:
getcwd
QURT POSIX 支持库中的函数总是返回空字符串。- QURT 中没有
write
函数,所以我使用fwrite
模拟了它(有趣的是read
存在)。 argv
在main
中总是NULL
,我不得不调用重载的InitGoogleTest()
.