如何为vc项目编写makefile以实现通过文件夹循环并在此文件夹中编译cpp文件

问题描述

我需要为在Windows上运行的c ++ visual-studio项目编写一个makefile。标准方式如下:

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

如果在此c ++ visual-studio项目中有很多cpp文件,则此类代码将会很多。此代码并不美观,我想对此进行改进。我的想法如下:遍历一个文件夹并编译该文件夹中的cpp文件获取所有obj文件的路径,并将其存储在变量中。代码如下:

INDIR =..\..\Intdir\$(Configuration)_$(Platform)\$(ProjectName)
#compile resource file,and compile all cpp files and link,the OBJS variable is used to store all obj file paths
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文件路径。如何解决此问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)