Windows용 GNU Make에서 PowerShell을 사용하는 방법

6550 단어 MakeWindowsPowerShell

소개



Windows용 GNU Make를 설치하고 기본 설정으로 실행하면 쉘이 명령 프롬프트(cmd.exe)로 실행됩니다. 어떻게 해서 Windows PowerShell (powershell.exe)로 변경할 수 없는지 조사하고 있었는데, set Powershell core as a default GNU Make shell on windows/linux 에 방법이 써 있었으므로 해 보았다.
PowerShell Core (pwsh.exe)로 변경할 수있는 것 같습니다. (이쪽은 시도하지 않았다)

환경


  • GNU Make 4.2.1 (Mingw-w64)
  • Windows Powershell 5.1.19041.610

  • 보충



    (2021/1/10 추기) 이하, GNU Make 의 인스톨 방법에 대해 여러가지 썼지만, Chocolatey 에 make 패키지 이 있었으므로, choco install make -y 로 인스톨 하는 쪽이 아마 빠르다.

    Windows에서 실행되는 GNU Make에는 몇 가지 종류가 있지만 GnuWin32은 버전이 너무 오래되었습니다. 또, 사용하고 싶은 것은 make 뿐이므로, msys2 나는 Windows에서 사용하는 쉘은 PowerShell이 ​​좋기 때문에 cygwin 의 Windows 네이티브로 실행할 수 있는 make 를 이용하기로 했다.

    또, 내 환경에는 Git for Windows 를 인스톨 하고 있으므로, Linux 라이크인 커멘드가 충돌하지 않게 make 만을 선택해 단독으로 인스톨 하기로 했다. WSL 에도 섞지 말라고 써 있는 것이고.

    GNU Make 설치



    다운로드



    Mingw-w64 에서 x86_64-posix-seh 를 선택하고 다운로드합니다.
    이 기사 작성 시점(2020/01/08)에서의 최신판은 x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z였다.

    posix와 seh의 의미는 혼합하지 않는 위험 (msys2와 Cygwin과 Git For Windows를 함께 사용해서는 안됩니다)에 따르면 다음과 같습니다.

    Thread : 스레드 모델. posix 또는 win32 중 하나를 선택합니다. win32 는 Windows 네이티브 함수를 사용하고 있어 빠르지만 C++ 11 이후의 thread, mutex, future 를 사용할 수 없게 된다. 특별한 이유가 없다면 posix로 좋을 것입니다.

    Exception : 예외 처리 핸들링. 아키텍처에 따라 다음을 선택할 수 있습니다.
    (약어)
    x86_64
    seh : Structured Exception Handling (Windows 네이티브. 추천)
    sjlj : SetJump/LongJump

    설치



    다운로드한 아카이브를 적절한 경로에 압축을 풉니 다.
    ex) E:\Programs\bin\mingw64

    GNU Make는 mingw32-make.exe라는 파일 이름이므로 make.exe로 이름을 바꿉니다.

    make 만 선별하기



    E:\Programs\bin\mingw64\bin 에서 남기고 싶은 명령만 남기고 삭제(또는 후퇴)한다.
    *.exe 는 뭔가 *.dll 에 의존하고 있을 가능성이 있으므로, Mingw-builds 다운로드 사이트라든지로 조사해 둔다.

    make.exe



    make.exe 는 단독으로도 움직이는 것 같기 때문에, 이것만 남겨 둔다.
    MinGW-w64 소개



    gcc.exe와 g++.exe는 libwinpthread-1.dll에 의존하기 때문에 이러한 명령을 사용하려면
  • gcc.exe
  • g++.exe
  • libwinpthread-1.dll

  • 를 정리해 남겨 둔다.
    Dependencies


    PATH 통과



    환경 변수의 PATH 에 E:\Programs\bin\mingw64\bin 를 추가해 둔다.

    Makefile 설정



    을 참고하여 SHELL과 .SHELLFLAGS를 설정했다.

    Makefile
    # vi: set fileencoding=utf-8 noexpandtab :
    SHELL       := powershell.exe
    .SHELLFLAGS := -NoProfile -Command
    
    all:
        Get-Date
    
    

    실행 결과
    PS F:\Temp> make
    Get-Date
    
    202118 22:37:15
    
    
    PS F:\Temp>
    

    이제 Windows에서도 make와 PowerShell을 사용한 자동화가 진행됩니다.
    죄송합니다.

    여담



    GNU Make의 사용법은 에서 공개되어 있는 set Powershell core as a default GNU Make shell on windows/linux 의 무료 서적에서 공부했다. 고맙고 고맙습니다.

    참고 URL


  • 「GNU Make 제3판 일본어판(오라일리)」의 무료 PDF
  • GNU Make 제3판
  • MinGW-w64 소개
  • Mingw-w64 오프라인 설치
  • Windows MinGW 개발 환경
  • Windows 환경에 프리 C 개발 환경을 구축했을 때의 메모
  • 좋은 웹페이지 즐겨찾기