问题描述
我对DSP开发这个话题很陌生。我已经在2个月前的Qualcomm论坛中提出了这个问题,但没有得到任何答案。
目前,我参与了将部分代码移植到高通公司生产的Hexagon DSP上。
我们的代码库可编译为共享库和基于GoogleTest的单元测试套件。
我已经成功地使用hexagon-clang编译了该库,它是Hexagon SDK 3.5.2的一部分。但是,由于对标准库的支持有限,hexagon-clang无法编译gtest。
我必须运行单元测试什么选项?
更新。
- 我们的代码是使用CMake配置的。它使用SDK随附的
Hexagon_toolchain.cmake
。相关的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六角形lang期间,找不到头文件
regex.h
。实际上,该文件只能在由Hexagon SDK安装的Android NDK中找到。我尝试设置包含六角形-的路径,但是其他头文件出现其他错误。我已经停止了此练习,因为我怀疑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库包含一个操作系统抽象层,缺少QURT支持。我刚刚遵循了编译器的错误消息,并添加了缺少的功能。 在该练习中,我发现了以下3个问题:
-
QURT POSIX支持库中的
-
getcwd
函数始终返回空字符串。 - 在QURT中没有
write
函数,因此我已经使用fwrite
进行了模拟(很有趣read
存在)。 -
main
始终是NULL
,我不得不称重载的InitGoogleTest()
。
argv
中的