gpt4 book ai didi

c++ - 用于交叉编译和CMake的预处理器宏的单元测试

转载 作者:行者123 更新时间:2023-12-01 14:52:05 28 4
gpt4 key购买 nike

我们的项目使用CMake在多个平台上构建,包括Windows,Linux和某些嵌入式OS上的交叉编译,并使用自定义CMake工具链文件进行了描述。
在交叉编译的情况下,我们必须维护预处理器宏集。
它以以下方式反射(reflect)在CMakeLists.txt中。
文件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)
...,而对于其他嵌入式OS,我们也有类似的文件。
文件 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上拥有的就是带有以下内容的JSON文件:编译器调用,由 EXPORT_COMPILE_COMMANDS生成。
你有什么建议?

最佳答案

我会用#warning宏来做,然后用bash来检查编译输出。然后,您可以为这些文件设置Werror并进行编译时检查。或者直接使用#error(感谢KamilCuk)
另一种方法是挖掘检查二进制文件,以检查工具链是否具有线程或其他功能。

关于c++ - 用于交叉编译和CMake的预处理器宏的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62810792/

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