2010-09-08 66 views
1
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

這是不行的,因爲NMAKE(建?)只使用前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 online郵件列表拍攝)