VSCode의 code runner로 파일 분할된 C/C++ 파일을 컴파일 & 실행
환경
실현하고 싶은 것
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
를 실행할 때 컴파일 방법을 변경해야합니다.
설정 변경
#include <stdio.h>
int main(void)
{
printf("hello\n"); // => hello
return 0;
}
#include <stdio.h>
void hello(void)
{
printf("hello\n");
}
#ifndef _HELLO_H_
#define _HELLO_H_
void hello();
#endif //_HELLO_H_
#include "hello.h"
int main(void)
{
hello(); // => hello
return 0;
}
code runner
를 찾습니다.code runner
의 json
파일을 엽니 다.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
, 설정 방법은 거의 동일합니다.
Reference
이 문제에 관하여(VSCode의 code runner로 파일 분할된 C/C++ 파일을 컴파일 & 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kkml_4220/items/210d8bad8a569b8f8194텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)