我有一个makefile,我想在Windows上用MinGW编译DLL。
这个项目我想编译成32位和64位。
我将MinGW32安装到C:\MinGW32
与x86编译器和C:\MinGW64
与x64编译器。
makefile根据目标使用一个或另一个path,但是我的问题是我需要在全局环境path上指定C:\MinGWxx\bin
,因为它需要bin目录的一些DLL。
我尝试了一些解决scheme,如makefile中的指定path(在Windows上的GNU make) ,但它不起作用。
看来,这个版本的操作系统(或不支持make)出口不会重新出现。
我试图把
SET Path=$(PATH_DVL_x86)\bin;$(PATH_DVL_x86)\msys\1.0\bin;${PATH}
这不会返回错误,但在环境path上不会更改。
您将需要使用.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: ... ...