在Dev Cpp中前端使用Clang 后端使用GCC,但可能是版本的问题,Clang 3.7的同GCC4.8的stdio库不兼容,后使用visual studio 的nmake来使用,但是nmake 不认识makefile 中的指令如 ${RM} ,没办法只好使用bat来将此指令替换成nmake认识的windows command命令,这样可以使用nmake及visual studio 了,另:使用DevCpp的mingw编译出来的dll文件出奇的大(一个printf("xxxx") release 版的就1M了),换成nmake和visual studio 后变正常。所在在windows 下还是使用visual studio 吧。
替换脚本如下:
@echo off
setlocal enabledelayedexpansion
rem DPATH : 指定目录
rem FILETYPE: 指定文件类型
rem SCONTENT: 替换前的字符串
rem DCONTENT: 替换后的字符串
rem TMPFILE : 临时文件
set DPATH=E:\C
set FILETYPE=*.win
rem set SCONTENT="${RM}"
rem set DCONTENT="del /f/q"
set DCONTENT=${RM}
set DCONTENT="rmdir /S/Q"
set TMPFILE=%random%.tmp
for /r %DPATH% %%i in ( %FILETYPE% ) do (
if exist %TMPFILE% ( del /f/q %TMPFILE% )
rem -- for /f "tokens=*" %%j in ('type "%%j"') do
rem -- (
rem -- set TMP=%%j
rem -- set TMP=!TMP:${RM}=del /f/q !
rem -- echo !TMP!>>%TEPFILE%
rem -- )
rem -- for /f "tokens=*" %%j in ('type "%%i"') do (
rem -- set TMP=%%j
rem -- echo !TMP:%SCONTENT%=%DCONTENT%!>nul 1>>%TMPFILE%
rem --)
rem -- (for /f "tokens=1* delims=:" %%a in ('findstr /n ".*" Makefile.win') do (
(for /f "tokens=1* delims=:" %%a in ('findstr /n ".*" %%i') do (
set str=%%b
if "!str!" neq "" (
set str=!str:${RM}=rmdir /S/Q!
)
echo,!str!
))>%TMPFILE%
move /y %TMPFILE% %%i
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\nmake.exe" -f "%%i" /D all
)
endlocal