Мне пришлось сделать что-то подобное для Symbian OS. Вот как я это сделал:
Допустим, вы хотите проверить, существует ли файл «file_strange.h», и хотите включить некоторые заголовки или ссылку на некоторые библиотеки в зависимости от наличия этого файла.
сначала создайте небольшой командный файл для проверки существования этого файла.
autoconf хорош, но слишком много для многих небольших проектов.
---------- check.bat
@echo off
IF EXIST [\epoc32\include\domain\middleware\file_strange] GOTO NEW_API
GOTO OLD_API
GOTO :EOF
:NEW_API
echo.#define NEW_API_SUPPORTED>../inc/file_strange_supported.h
GOTO :EOF
:OLD_API
echo.#define OLD_API_SUPPORTED>../inc/file_strange_supported.h
GOTO :EOF
---------- check.bat заканчивается
затем я создал файл gnumake
---------- checkmedialist.mk
do_nothing :
@rem do_nothing
MAKMAKE :
check.bat
BLD : do_nothing
CLEAN : do_nothing
LIB : do_nothing
CLEANLIB : do_nothing
RESOURCE : do_nothing
FREEZE : do_nothing
SAVESPACE : do_nothing
RELEASABLES : do_nothing
FINAL : do_nothing
---------- check.mk заканчивается
включите файл check.mk в ваш файл bld.inf, он ДОЛЖЕН быть раньше ваших файлов MMP
PRJ_MMPFILES
gnumakefile checkmedialist.mk
теперь во время компиляции для файла file_strange_supported.h
будет установлен соответствующий флаг.
вы можете использовать этот флаг в ваших файлах cpp или даже в файле mmp
например в мммп
#include "../inc/file_strange_supported.h"
#ifdef NEW_API_SUPPORTED
LIBRARY newapi.lib
#else
LIBRARY oldapi.lib
#endif
и в .cpp
#include "../inc/file_strange_supported.h"
#ifdef NEW_API_SUPPORTED
CStrangeApi* api = Api::NewLC();
#else
// ..
#endif