【问题标题】:Change environment path into the makefile with MinGW32-make.exe on Windows在 Windows 上使用 MinGW32-make.exe 将环境路径更改为 makefile
【发布时间】:2015-02-17 00:48:05
【问题描述】:

我有一个 makefile,我想在 Windows 上用 MinGW 编译一个 DLL。

这个项目我想编译成 32 位和 64 位。

我已将 MinGW32 安装到带有 x86 编译器的 C:\MinGW32 和带有 x64 编译器的 C:\MinGW64 中。

makefile 根据目标使用一个或另一个路径,但我遇到的问题是我需要在全局环境路径上指定 C:\MinGWxx\bin,因为它需要 bin 目录的一些 DLL。

我尝试了一些解决方案,例如 Specifying path in makefile (GNU make on Windows),但它不起作用。

在此版本的操作系统中似乎无法识别导出(或 make 不支持)。

我试着放了

SET Path=$(PATH_DVL_x86)\bin;$(PATH_DVL_x86)\msys\1.0\bin;${PATH}

这不会返回错误,但不会更改环境路径。

【问题讨论】:

    标签: windows makefile mingw mingw-w64


    【解决方案1】:

    您需要使用 .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: ...
        ...
    

    【讨论】:

    • 哇,超级有用,这个!感谢您花时间记录它。通过包含.ONESHELL 目标,我终于能够从我用来从Windows 上的源代码编译R 的Makefile 中为所需的TMPDIR 环境变量设置路径。跟着ONESHELL:,我做了export "TMPDIR:=C:\tmp",一切都很好。
    猜你喜欢
    • 1970-01-01
    • 2011-02-02
    • 2016-12-07
    • 2019-01-08
    • 1970-01-01
    • 2020-07-21
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多