システム名(Linux
)、コンパイラgcc
)またはアーキテクチャ(x86_64
)をバイナリに含めるファイルに基本情報を保存するにはどうすればよいですか?CMake:バイナリにビルド/システム情報を格納する
このような.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
質問は何ですか? – arrowd
質問を編集しました。 – mattmilten