【发布时间】:2017-10-03 04:37:15
【问题描述】:
如何将系统名称 (Linux)、使用的编译器 gcc) 或架构 (x86_64) 等基本信息存储在包含在二进制文件中的文件中?
编写这样一个.in 文件的所有代码都已经存在,除了相关的 CMake 变量都是空的,例如CMAKE_SYSTEM 或 CMAKE_SYSTEM_PROCESSOR:
set(NEWLINE "\\\\n")
file(WRITE ${CMAKE_BINARY_DIR}/update_buildflags.cmake "
file(WRITE \${DST} \"#define BUILDFLAGS \\\"
ARCH=\${CMAKE_SYSTEM}${NEWLINE}
COMP=\${CMAKE_SYSTEM_PROCESSOR}${NEWLINE}
BUILD=\${CMAKE_BUILD_TYPE}${NEWLINE}\\\"\n\")")
add_custom_target(update_buildflags COMMAND ${CMAKE_COMMAND}
-DDST=${PROJECT_SOURCE_DIR}/src/buildflags.c
-P ${CMAKE_BINARY_DIR}/update_buildflags.cmake)
然后将此自定义目标添加为主要二进制文件的依赖项,生成的文件 src/buildflags.c 如下所示:
#define BUILDFLAGS " ARCH=\n COMP=\n BUILD=\n"
为什么使用的 CMake 变量是空的,尽管使用 message() 打印它们会显示正确的信息?
CMAKE_SYSTEM: Linux-4.4.0-92-generic
【问题讨论】:
-
有什么问题?
-
我编辑了问题。
标签: cmake