이번에 만들어 본 프로그램은 윈도우 환경 Visual Studio Code에서 MingW를 사용하여 C/C++환경을 자동으로 설정해주고(Visual Studio Code의 C/C++ Recommended Extensions 설치와 환경변수 등록까지 수행합니다) 프로젝트 관리까지 해주는 CLI툴을 만들어 보았습니다. 소스코드는 Open Source로 공개되며 아래 깃허브 링크로 들어가시면 됩니다.
https://github.com/J-hoplin1/VSCode_C_CPP_Env_Initiator
윈도우 실행파일(.exe)는 이 링크(https://github.com/J-hoplin1/VSCode_C_CPP_Env_Initiator/releases)에 가서 최신 Release Note의 'VSC_C_CPP_MingW_Manager.zip'을 다운로드 사용해주시기 바랍니다. 실행파일은 아래와 같이 dist - EnvManager - EnvManager.exe 에 있습니다. 실행파일에 대해 우클릭을 하여 바로가기를 만들어서 사용하시는걸 추천드립니다(개인적인 경험)
작동 원리는 기본적인 Python과 Windows Batch File을 subprocess로 연계하는 방식을 채택하여 제작하였습니다. 이 방식을 채택하게 된 이유는 아래와 같습니다.
- MingW를 unzip후에 시스템 환경변수 등록을 위해서는 프로그래밍 언어가 아닌 운영체제의 직속 인터페이스인 shell을 사용하는게 가장 적절하다.
- 프로젝트를 생성 후 열기 혹은 프로젝트 열기를 구현하기 위해서는 VSCode의 'code'명령어를 사용하여 여는것이 가장 좋은 방법으로 생각되었다.
이 프로그램을 실행하기 위한 기본 조건은 Visual Studio Code(https://code.visualstudio.com/)를 설치해 주셔야 하며, 한가지 주의할 점은 code명령어가 Path에 추가되어있어야합니다(그냥 디폴트 상태로 설치하시면 됩니다). 또한 이 프로그램은 윈도우 10에 최적화 되어있습니다. 다른 운영체제 계열 혹은 다른 버전의 윈도우에서는 정상적인 작동이 이루어지지 않을 수 있다는점 알아주시기 바랍니다.
사용하시다가 만약 오류가 있거나 좋은 개선방안이 있거나, 추가됐으면 하는 기능이 있다면 issue(https://github.com/J-hoplin1/VSCode_C_CPP_Env_Initiator/issues)를 남겨주시기 바랍니다.
이제 전반적인 사용법에 대해 설명해 드리겠습니다. 각 옵션 별로 어떤 기능이 있는지 설명하겠습니다.
1. 실행하기
실행하게 되면 아래와 같은 창이 나오게 됩니다.
이 프로그램을 종료하기 위해서는 Ctrl + C가 아닌 /exit을 사용해 종료해 주시기 바랍니다. Ctrl + C로 강제종료를 하게 되면 경고창이 뜨게 됩니다
2. help
1번 옵션인 help를 선택하게 되면 이 소프트웨어의 기본적인 Document가 나오게 됩니다. 만약 윗부분이 짤린다면 창을 확대해 주시기 바랍니다.
엔터키를 누르시면 다시 메인으로 가실수 있습니다.
3. Install_MinGW_64bit_and_build_basic_ENV
이 옵션은 아래 기능들을 순차적으로 수행합니다
- MingW설치 : 이 소프트웨어에서 설치하는 MingW위치를 임의로 변경하지 말아주시기 바랍니다. 변경시 소프트웨어 기능을 정상적으로 사용할 수 없게됩니다.
- MingW Windows 환경변수 자동등록
- Visual Studio Code Microsoft 권장 C/C++ Extension 모두 설치 : 각 Extension은 실행시점 최신버전으로 설치됩니다. 하지만 추후 extension이 있을시 업데이트는 사용자가 직접 해야합니다
현재 위 사진과 같이 GCC가 설치가 안되어있는것을 볼 수 있습니다.
실행을 하게되면 처음에 위 사진과 같이 검은 화면에 커서만 깜빡이게 됩니다. 이 과정이 MinGW를 설치하고 있는 과정입니다. 그러다 CMD에 관리자 권한을 부여하는지 물어보게 되는데, 그때 꼭 '예'를 눌러주시기 바랍니다. 이 부분이 MinGW를 환경변수에 등록하는 과정입니다. 예를 누르지 않을 경우, 수동으로 환경변수에 등록해주어야될 수 도 있습니다. 그 후 C/C++ Extension까지 설치를 정상적으로 완료하게 되면 아래와 같은 화면이 나오게 됩니다.
이제 다시 GCC 설치 / 환경변수 등록 여부를 확인합시다.
아까까지 실행되지 않던 GCC명령어가 환경변수에 잘 등록되어 적용된것을 볼 수 있습니다.
만약 기존에 MinGW가 설치되어있는 상태라면 충돌을 방지하기 위해 아래와 같은 오류창을 출력합니다
4. Settings
다른 옵션을 보기 전 먼저 View Settings를 먼저 보겠습니다. 이 옵션에서는 기본적인 이 소프트웨어의 정보를 볼 수 있습니다. 여기서 가장 중요한건 이 소프트웨어에 지정되어있는 프로젝트 경로입니다. 프로젝트 경로는 사용자가 만들 프로젝트들이 저장되는 기본 디렉토리를 의미합니다. 이 프로그램에서는 제가 기본적으로 'C:\CProjectDir'라는 임의의 디렉토리를 지정하였습니다. 이 디렉토리가 없다고요? 걱정하지 마세요. 프로그램에서 최초 실행시 디렉토리 존재하지 않을 경우 알아서 생성합니다.
만약 이 프로젝트 디렉토리를 바꾸고 싶다면 프로젝트 경로로 지정하고 싶은 경로를 6번 옵션에 입력해 주면 됩니다. 파일 경로는 아래 사진과 같이 하이라이트 친 부분을 클릭하면 나오는 경로를 복사 붙여넣기해주시면 됩니다. 복사 붙여넣기 방법이 아닌 그냥 경로를 입력해 지정하고 싶은 경우 입력해주시면 알아서 디렉토리를 생성하고, 프로젝트 디렉토리로 지정합니다. 디렉토리를 변경하고 다시 settings를 가면 프로젝트 디렉토리가 변경되어있는것을 볼 수 있습니다. 이 변경된 디렉토리는 바꾼 즉시부터 적용되며, 프로그램을 다시 시작해도 최근 지정한 프로젝트 디렉토리로 고정됩니다.
만약 경로를 그냥 입력하는 방법에서 잘못된 디렉토리나 만들수 없는 디렉토리를 입력한 경우 아래와 같이 오류 창이 나오게되며 프로그램을 종료합니다. 프로그램을 바로 종료하는것은 내부 데이터 꼬임 방지를 위한 것이며, 이는 추후 버전에서 최적화작업을 통해 개선할 예정입니다.
5. Initiate_new_C_C++_Project
이제 새로운 프로젝트를 생성해봅시다. 5번 옵션을 들어가면 아래와 같은 창이 나옵니다. 그럼 새로 생성하고싶은 프로젝트의 이름을 입력하면 프로젝트 환경을 자동으로 초기화 하고, 해당 프로젝트에서 VSCode를 실행하게됩니다.
그리고 지정한 프로젝트 디렉토리에 직접 들어가봐도 프로젝트가 생성된것을 볼 수 있습니다.
그렇다면 실험으로 C파일 하나를 만들어 디버깅과정을 해보겠습니다. 임의의 코드를 작성하고 중단점 설정후 F5를 눌러 디버깅을 하니 아무 문제 없이 잘 되는모습을 볼 수 있습니다. 중단점 없이 그냥 F5를 누르면 터미널에서 일반 실행을 합니다
6. Open Existing Project
이 옵션과 다음 옵션 설명을 위해 테스트 프로젝트 2개를 더 생성했습니다.
이 옵션은 지정한 프로젝트 내에 있는 기존에 생성한 프로젝트를 선택해 Visual Studio Code로 여는것을 수행합니다. 예를 들어 저는 week2라는 프로젝트를 열고싶다고 가정합니다.
그럼 아래 사진과 같이 바로 프로젝트가 열리는것을 볼 수 있습니다. 만약 선택한 프로젝트가 이미 열려있다면 해당 열린 창을 다시 엽니다.
7. Delete Existing Project
이 4번 옵션은 기존 생성한 프로젝트를 삭제하는 옵션입니다. 만약 week3를 삭제하고 싶다면 해당 번호를 선택합니다. 그러면 정말 선택할 것인지 yes혹은 no를 입력하는 창이 나오게 됩니다. no를 입력하면 다시 메인으로, yes를 클릭하면 삭제를 합니다. 이과정에서 삭제하면 복구가 불가능하니 신중하시기 바랍니다
그리고 만약 현재 작업중인 week1디렉토리를 삭제하고 싶다고 합시다. 만약 현재 프로세스가 가동중이거나 열려있는 상태의 프로젝트를 삭제하려고 하는 경우에는 아래 사진과 같이 윈도우 권한 오류가 뜨게 됩니다. 만약 이 오류창이 뜬다면 해당 프로젝트의 특정 프로세스가 가동중이라는 뜻이니 삭제전 확인해 주시기 바랍니다.
8. command
이 소프트웨어에서는 /exit, /back두개의 커맨드를 지원합니다. 어떤 상황에서 각 명령어를 실행할 수 있는지 알려드리겠습니다.
- exit : 프로그램 종료
- /back : 이전단계로(help,Install_MinGW_64bit_and_build_basic_ENV,view settings를 제외한 옵션에서 모두 사용가능)
이것으로 소프트웨어 사용 방법에대한 설명을 마치겠습니다.