用于交叉编译和CMake的预处理器宏的单元测试
Unit-tests for preprocessor macros for cross-compilation and CMake
我们的项目在多个平台上使用CMake构建,包括Windows、Linux和一些嵌入式操作系统上的交叉编译,使用自定义CMake工具链文件进行描述。
在交叉编译的情况下,我们必须维护预处理器宏集。
它以以下方式反映在CCD_ 1中。
文件embedded_os1.toolchain.cmake
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR ARM)
set(CMAKE_C_COMPILER /path/to/cross-compiler)
# blah-blah-blah
set(embedded_OS1 TRUE)
我们也为其他嵌入式操作系统提供了类似的文件。
文件CMakeLists.txt
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
if(embedded_OS1)
add_definitions(-Dmacro1 -Dmacro2)
elseif(embedded_OS2)
add_definitions(-Dmacro3 -Dmacro4)
elseif(embedded_OS3)
add_definitions(-Dmacro1 -Dmacro4)
endif()
我想执行某种自动检查,以确保所有预处理器宏都设置正确。
我可以很容易地在Windows和Linux上进行单元测试。
但在嵌入式操作系统上不可能编译和运行可执行文件,我只能编译静态库,然后对其进行签名,放入固件映像等。我在PC上除了库之外,只有EXPORT_COMPILE_COMMANDS
生成的带有编译器调用的JSON文件。
你有什么建议?
我会用#warning
宏来做这件事,并用bash检查编译输出。然后您可以为这些文件设置Werror
并进行编译时检查。或者简单地使用#error
(感谢KamilCuk(
另一种方法是深入研究有助于查看工具链是否具有线程或其他功能的检查二进制文件。
相关文章:
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 用于交叉编译和CMake的预处理器宏的单元测试
- C++ 用于单元测试的模板模板
- 提升 1.64 单元测试编译失败
- 单元测试欧拉到四元数实现失败
- 运行 C++ 单元测试时LNK2005链接错误
- 禁用自动捕获 Googletest 单元测试中的C++异常
- 有没有办法在不使用 #ifdef 的情况下不编译发布版本中的单元测试函数体?
- 使用 Google Test 对自定义断言函数进行单元测试
- 如何将我的 CMake 项目配置为运行所有单元测试?
- 在Qt C++单元测试中动态加载QQuickWindow而不是QQuickWidget
- MS 本机单元测试 - 断言::线程失败不起作用
- 如何获取 CMake 单元测试的相对路径?
- QTimer 超时不会在单元测试中触发
- 如何在提升构建中设置环境变量以进行提升单元测试框架?
- 在 AtMega32a 上运行的C++的单元测试
- 使用 gtest 框架在单元测试代码中检查目标对象的私有变量的最佳实践是什么?
- 如何用 c++ 编写单元测试?