我有一个makefile,我想在Windows上使用MinGW编译DLL。
这个项目我要编译成32& 64位。
我将MinGW32安装到带有x86编译器的C:\MinGW32
和带有x64编译器的C:\MinGW64
。
makefile根据目标使用一个或另一个路径,但我遇到的问题是我需要在全局环境路径上指定C:\MinGWxx\bin
,因为它需要bin目录的一些DLL。 / p>
我尝试了一些类似的解决方案 Specifying path in makefile (GNU make on Windows),但它无效。
在此版本的操作系统中似乎没有重新导出导出(或者不支持make)。
我试图把
SET Path=$(PATH_DVL_x86)\bin;$(PATH_DVL_x86)\msys\1.0\bin;${PATH}
这不会返回错误,但环境路径没有变化。
答案 0 :(得分:2)
您需要使用.ONESHELL
特殊目标强制配方在一个shell中运行所有命令:
.ONESHELL:
.PHONY: all anotherRule
all:
@ECHO OFF
ECHO %PATH% # Will echo your PATH environment variable content
SET PATH=%PATH%;toto
ECHO %PATH% # Will echo your PATH + ";toto" appended to it
anotherRule:
@ECHO OFF
ECHO %PATH% # Will echo your PATH without ";toto", as expected
现在可以轻松编写特定规则以用于不同的编译器:
all-x86: CC := mingw32-gcc
all-x86: ...
...
all-64: CC := mingw64-gcc
all-64: ...
...