none
如何使用VC的makefile来遍历一个文件夹的cpp文件进行编译 RRS feed

  • 问题

  •      一般vc的makefile文件的编译套路是单个c或cpp文件来执行一个cl命令语句,类似于:

    $(INDIR)\splitFile.obj:.\splitFile.c
        cl -c  $(CC) /Fo"$(INDIR)\\" /Fd"$(INDIR)\\" .\splitFile.c

          这样如果cpp文件很多得话就会很繁琐,我想能否使用批处理代码遍历一个文件夹的cpp文件进行编译,makefile代码类似于:

    #编译资源文件,并编译所有的cpp文件并进行链接操作,其中OBJS用于保存所有的obj文件路径
    OBJS=
    $(OUTDIR)\$(ExeName):.\GraphSoft.rc
    	rc.exe /n /v /fo $(INDIR)\GraphSoft.res .\GraphSoft.rc \
    	&& for /r ./ %%a in (*.cpp) do  \
    		cl -c  $(CC) /Fo"$(INDIR)\\" /Fd"$(INDIR)\\" %%a /I".\" \
    	&& for /r "$(INDIR)\\" %%a in (*.obj) do  \
    	    set "OBJS=!OBJS! %%a" \
    	&& @echo $(OBJS) 
    	&& link /machine:$(TARGET_MACHINE) /INCREMENTAL:YES /NOLOGO /subsystem:windows /out:$(OUTDIR)\$(ExeName) $(OBJS) $(INDIR)\GraphSoft.res kernel32.lib user32.lib gdi32.lib comdlg32.lib
         现在的问题是OBJS变量根本无法获取到所有obj文件的路径。请问如何解决呢?


    前无古人,后无来者

    2020年9月1日 12:18