CMake を使用するだけで、非常に簡単です。
次のものが必要です。
まず、構成の詳細を見つけることを意味します。たとえば、一部の関数が一部のプラットフォームで異なる名前であることがわかっている場合は、次を使用TRY_COMPILE
してそれを発見できます。
TRY_COMPILE(HAVE_ALTERNATIVE_FUNC
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/alternative_function_test.cpp
CMAKE_FLAGS -DINCLUDE_DIRECTORIES=xxx
)
wherealternative_function_test.cpp
は、代替定義でのみコンパイルされるソース ディレクトリ内のファイルです。
HAVE_ALTERNATIVE_FUNC
これにより、コンパイルが成功した場合に変数が定義されます。
次に、この定義がソースに影響するようにする必要があります。フラグをコンパイルするために追加することもできます
IF(HAVE_TR1_RANDOM)
ADD_DEFINITIONS(-DHAVE_TR1_RANDOM)
ENDIF(HAVE_TR1_RANDOM)
またはconfig.h
ファイルを作成できます。config.h.in
次の行で作成します
#cmakedefine HAVE_ALTERNATIVE_FUNCS
config.h
のこの行でファイルを作成しますCMakeLists.txt
( を参照CONFIGURE_FILE
)
CONFIGURE_FILE(config.h.in config.h @ONLY)
これは、CMake 変数#cmakedefine
に変換される#define
か#undef
、CMake 変数に応じて変換されます。
ところで、edianness のテストについては、このメールを参照してください