Вы можете просто использовать CMake, это довольно просто.
Вы нужны эти вещи:
Во-первых, означает выяснить специфику конфигурации. Например, если вы знаете, что какая-то функция называется по-разному на какой-то платформе, вы можете использовать TRY_COMPILE
, чтобы обнаружить, что:
TRY_COMPILE(HAVE_ALTERNATIVE_FUNC
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/alternative_function_test.cpp
CMAKE_FLAGS -DINCLUDE_DIRECTORIES=xxx
)
где alternative_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)
в #cmakedefine
будут переведены на #define
или #undef
в зависимости от переменной CMake.
BTW, для тестирования edianness см this mail
окна никогда не будет целью для меня, я надеюсь;) – claf