Предварительная обработка исходного файла драйвера устройства - PullRequest
1 голос
/ 08 сентября 2010
C_DEFINES=$(C_DEFINES) -D_PRODUCT_A
//C_DEFINES=$(C_DEFINES) -D_PRODUCT_B

#ifdef PRODUCT_A // <- I want to do doing like this in a sources file.
MOST_SOURCES= a.c b.c productA.c
#elif PRODUCT_B
MOST_SOURCES= a.c b.c productB.c
#endif

Есть ли правильный синтаксис?

1 Ответ

1 голос
/ 08 сентября 2010

Это не работает, потому что nmake (build?) Использует только первую строку SOURCES в файле

!IFDEF NEW_SRC
SOURCES=src1.c src2.c src3.c
!ELSE
SOURCRS=src3.c src4.c src5.c
!ENDIF

Но вы можете включить переменные окружения, такие как:

SOURCES=\
        purecall.c                  \
        driver_base.cpp             \
        capture.cpp                     \
        device.cpp                  \
        $(_rc_filename)                 

или вы делаете что-то вроде:

makefile.inc
--------------
!IFDEF NEW_SRC
MY_SRC=src1.c src2.c src3.c
!ELSE
MY_SRC=src3.c src4.c src5.c
!ENDIF

!IF [echo SOURCES=$(MY_SRC) > sources.inc]
!ENDIF

sources
--------
NTTARGETFILE0=
TARGETNAME=mylib
TARGETTYPE=LIBRARY
.
.
.
!include sources.inc


mybuild.bat
-------------
build -Z0
build -Zcef

(Это взято из OSR онлайн списка рассылки)

...