gpt4 book ai didi

c - 如何手动指定 Ceedling 无法获取的源文件?

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:11 25 4
gpt4 key购买 nike

我正在为嵌入式应用程序开发一项功能,我正在使用 Ceedling(构建在 Unity 测试框架之上)对其进行测试。我遇到的一个问题是我需要在 C 源文件中使用 Ceedling 未编译/链接到我的单元测试文件的功能。

根据 Ceedling 文档:

Ceedling knows what files to compile and link into each individual test executable by way of the #include list contained in each test file. Any C source files in the configured search directories that correspond to the header files included in a test file will be compiled and linked into the resulting test fixture executable.

问题是我在我的单元测试中包含了一个头文件“RTOS.h”以访问 embOS RTOS 函数,但这些函数是在“RTOSInit.c”和“os7m_tl__dp.a”中定义的,并且根据此文档,当 Ceedling 在单元测试代码中看到 #include "RTOS.h" 时,它只会查找“RTOS.c”。

我正在寻找一种方法来手动指定在生成测试运行程序可执行文件时应编译和链接这些附加文件。这似乎是 Ceedling 的一个非常基本的要求,但我无法从文档中看到执行此操作的方法。

我也有raised this as an issue在 Ceedling Github 网站上。

作为引用,我当前的“project.yml”文件(由 Ceedling 使用)如下所示:

:project:
:use_exceptions: FALSE
:use_test_preprocessor: FALSE
:use_auxiliary_dependencies: TRUE
:build_root: build
:release_build: FALSE
:test_file_prefix: test_

:environment:
- :path:
- 'C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin'
- 'C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin'
- #{ENV['PATH']}

:extension:
:executable: .out

:paths:
:test:
- +:test/**
- -:test/support
:source:
- src/main/c/**
- src/main/include/**
- src/main/resources/**
:support:
- test/support

:defines:
:commmon: &common_defines []
:test:
- *common_defines
- TEST
:test_preprocess:
- *common_defines
- TEST

:cmock:
:mock_prefix: mock_
:when_no_prototypes: :warn
:enforce_strict_ordering: TRUE
:plugins:
- :ignore
- :callback
:treat_as:
uint8: HEX8
uint16: HEX16
uint32: UINT32
int8: INT8
bool: UINT8

:tools:
:test_compiler:
:executable: iccarm
:name: 'IAR test compiler'
:arguments:
- -D _DLIB_FILE_DESCRIPTOR=1
- --debug
- --endian=little
- --cpu=Cortex-M3
- -e
- --fpu=None
- -Ol
- --preprocess "${3}"
- --dlib_config "C:/Program Files (x86)/IAR Systems/Embedded Workbench 6.5/arm/INC/c/DLib_Config_Normal.h"
- -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE
- -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR
- -o "${2}"
- --diag_suppress=Pa050
- '"${1}"'

:test_linker:
:executable: ilinkarm
:name: 'IAR test linker'
:arguments:
- --vfe
- --redirect _Printf=_PrintfFull
- --redirect _Scanf=_ScanfFull
- --semihosting
- --config "C:/Program Files (x86)/IAR Systems/Embedded Workbench 6.5/arm/config/generic_cortex.icf"
- --map "${3}"
- -o "${2}"
- '"${1}"'

:test_fixture:
:executable: cspybat
:name: 'CSpyBat test runner'
:arguments:
- '"C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armproc.dll"'
- '"C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armsim2.dll"'
- '"${1}"'
- --plugin "C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armbat.dll"
- --backend -B
- --endian=little
- --cpu=Cortex-M3
- --fpu=None
- --semihosting

:plugins:
:load_paths:
- vendor/ceedling/plugins
:enabled:
- stdout_pretty_tests_report
- module_generator
...

最佳答案

我有同样的问题,使用空头文件强制Ceedling编译相应的源文件。幸运的是,Unity 中添加了一个新的宏来解决这个问题。只需在测试文件的顶部添加类似的内容:

TEST_FILE("source_file_to_compile.c")

关于c - 如何手动指定 Ceedling 无法获取的源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41182876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com