问题描述
我需要为在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 (将#修改为@)