VSCode의 code runner로 파일 분할된 C/C++ 파일을 컴파일 & 실행

4855 단어 C++CMacWindowsVSCode

환경


  • MacOS Big Sur
  • Visual Studio Code (이하, VSCode)

  • 실현하고 싶은 것



    VSCode의 확장 기능 Code Runner을 사용하여 파일 분할 C/C++ 실행을 바로 가기로 설정할 수 있습니다.

    code runner 설치 및 설정



    다음 기사를 참조하여 설치하십시오.

    기본 설정 문제



    기본 설정을 사용하면 다음과 같은 단일 파일 만 code runner으로 컴파일하고 실행할 수 있습니다.

    hello.c
    #include <stdio.h>
    
    int main(void)
    {
        printf("hello\n"); // => hello
        return 0;
    }
    

    같은 계층의 디렉토리에 hello라는 실행 파일이 생성되고 콘솔에 hello가 출력됩니다.
    따라서 지금까지 의도 한대로 올바르게 실행할 수 있습니다.

    그러나 기본 설정에서는 다음과 같은 경우에는 올바르게 컴파일 할 수 없습니다.

    다음과 같이 파일 분할을 고려하십시오.

    hello.c
    #include <stdio.h>
    
    void hello(void)
    {
        printf("hello\n");
    }
    

    hello.h
    #ifndef _HELLO_H_
    #define _HELLO_H_
    
    void hello();
    
    #endif //_HELLO_H_
    

    main.c
    #include "hello.h"
    
    int main(void)
    {
        hello(); // => hello
        return 0;
    }
    

    여기서는 파일 내용에 대해 자세히 논의하지 않습니다.

    문제점은 이것이 기본 설정에서 의도 한대로 컴파일되고 실행되지 않는다는 것입니다.

    기본 설정은 다음과 같이 컴파일 타임 오류를 출력합니다.


    즉, hello라는 함수가 정의되지 않았기 때문에 어떻게해야할지 모르겠습니다.

    문제의 본질



    분할hello.c이 연결되어 있지 않음

    따라서 code runner를 실행할 때 컴파일 방법을 변경해야합니다.

    설정 변경


  • VSCode 확장에서 설치된 code runner를 찾습니다.
  • code runnerjson 파일을 엽니 다.
  • C/C++ 설정을 찾으면 기본적으로 다음 이미지와 같습니다.
  • gcc $filename 부분을 *.c로 변경 한 다음 cpp도 마찬가지로 g++ $filename*.cpp로 변경합니다.
    즉, 다음과 같이 변경하십시오.

  • settings.json
          "c": "cd $dir && gcc *.c -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
          "cpp": "cd $dir && g++ *.cpp -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
    

    이제 파일 분할 C/C++에서도 code runner에서 hello.c도 링크되어 올바르게 실행할 수 있습니다.

    주의



    이 설정은 main.c를 실행하는 디렉토리에있는 .c 파일 만 링크됩니다.

    따라서 하위 디렉토리에있는 .c 파일은 링크되지 않으므로 자연스럽게 컴파일 오류가 출력됩니다.
    서브 디렉토리에 존재하는 파일도 링크하고 싶다면,find . -name "*.cpp" -type f | xargs g++ ...등으로 변경하는 것으로 무리하게 실행할 수는 있을지도 모르지만, 이것을 했기 때문에 의도하지 않은 불필요한 파일도 동시에 링크되어 실행 파일의 크기가 커지거나 함수의 배팅이 일어나 버릴지도 수 있습니다.

    따라서이 방법은별로 권장하지 않습니다.
    아무래도 쉽게 실행하는 것을 생각한다면 어른스럽게 Makefile 등을 작성하는 것을 추구하고 싶습니다.

    아마도 Windows, 설정 방법은 거의 동일합니다.

    좋은 웹페이지 즐겨찾기