我们的项目在多个平台上使用CMake构建,包括Windows、Linux和一些嵌入式操作系统上的交叉编译,使用自定义CMake工具链文件进行描述。
在交叉编译的情况下,我们必须维护一组预处理器宏。
这反映在
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)
... 我们还有其他嵌入式操作系统的类似文件。
文件
克马克主义者。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上的单元测试轻松完成这项工作。
但不可能在嵌入式操作系统上编译和运行可执行文件,我只能编译静态lib,然后对其进行签名,放入固件映像,等等。除了库之外,我在PC上拥有的只是JSON文件和编译器调用,由
EXPORT_COMPILE_COMMANDS
.
你有什么建议?