BASH make 및 cmake 명령을 사용하여 C++ 플래그를 설정할 수 있습니까?

BASH make 및 cmake 명령을 사용하여 C++ 플래그를 설정할 수 있습니까?

MX Linux debian 10(buster)을 사용하고 있어서 컴파일러를 업데이트할 수 없을 것 같습니다. 이전 버전과 호환되도록 더 이상 사용하지 않거나 수정할 수 있는 방법이 있나요? 예를 들어 Btop을 컴파일하려고 하는데 실행하면 makeg++ 오류가 발생합니다.

error: unrecognized command line option ‘-std=c++20’; did you mean ‘-std=c++2a’?

makeg++의 이전 버전으로 컴파일되도록 런타임에 추가할 수 있는 플래그나 항목이 있습니까 ? 모든 코드를 검색했지만 "c++20"이라는 한 줄도 찾을 수 없었습니다. 저는 프로그래머가 아니기 때문에 놓친 부분이 있을 수도 있습니다.

내가 그것을 실행하면 g++ -v버전 8.3.0을 실행하고 있다고 표시되는데, 내가 오해하지 않는 한 이 버전은 20보다 훨씬 오래된 것 같습니다.

마찬가지로 Tenacity(Audacity 브랜치)를 컴파일하려고 하는데 실행하면 다음과 같은 결과를 cmake .얻습니다.

 CMake Error at CMakeLists.txt:12 (cmake_minimum_required):
  CMake 3.15 or higher is required.  You are running version 3.13.4

이에 대한 해결책도 있나요?

매우 감사합니다!

답변1

MX Linux debian 10(buster)을 사용하고 있어서 컴파일러를 업데이트할 수 없을 것 같습니다.

확신하는. 버전에 관계없이 소스에서 gcc를 컴파일하고 로컬로 설치할 수 있습니다. 후자에는 약간의 노력이 필요하지만.

새로운 Debian 버전으로 전환하여 노력을 절약할 수도 있습니다.

[Btop] make를 실행할 때 이전 버전의 g++로 컴파일되도록 플래그 등을 추가할 수 있나요?

Btop의 Makefile을 보고 무엇이 플래그를 설정했는지 알아내거나( make -p도움이 됨), Makefile을 직접 변경하거나, Btop이 Makefile을 생성하는 데 사용하는 파일을 변경하세요.

버전 8.3.0을 실행하고 있다고 하는데 20보다 훨씬 오래된 것 같습니다.

이것은 gcc 버전이 아니라 C++ 표준 버전에 관한 것입니다. 구경하다이 테이블어떤 gcc 버전이 어떤 언어 표준 버전을 지원하는지 확인하세요.

그러나 이는 Btop 소스 코드가 컴파일러에서 지원하지 않는 표준 기능을 사용하는 경우 Btop 소스 코드가 분명히 컴파일되지 않는다는 의미는 아닙니다. 사용할 표준 버전을 정의하기 위해 거기에 넣으면 여전히 이전 표준에 따라 컴파일됩니다.

CMake 3.15 이상이 필요합니다. 버전 3.13.4를 실행 중입니다.

위와 같은 문제: 소스에서 Cmake를 컴파일하거나 최신 패키지를 사용할 수 있도록 Debian 버전을 업그레이드하세요.

관련 정보