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 ファイル (たとえば 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