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 のテストについては、このメールを参照してください