>백엔드 개발 >C++ >CMake를 사용하여 컴파일러에서 C 11 지원을 감지하는 방법은 무엇입니까?

CMake를 사용하여 컴파일러에서 C 11 지원을 감지하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-02 18:26:31245검색

How to Detect C  11 Support in Your Compiler with CMake?

CMake를 사용하여 컴파일러의 C 11 지원 감지

소프트웨어 개발에서 좌절감 중 하나는 설치된 컴파일러에서 지원하지 않는 기능이 필요한 코드를 컴파일하려고 하는 것입니다. 예를 들어, 사용자가 C 98만 지원하는 이전 컴파일러를 사용하는 경우 C 11이 필요한 소프트웨어 애플리케이션이 올바르게 컴파일되지 않을 수 있습니다. 이러한 상황에서는 컴파일 시간이 아닌 CMake 실행 중에 컴파일이 실패할 수 있다면 도움이 될 것입니다.

솔루션

CMake 버전 3.1.0 이상에서는 C 컴파일러가 지원하는 C 기능을 감지할 수 있습니다.

<code class="cmake">cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
project(foobar CXX)
message("Your C++ compiler supports these C++ features:")
foreach(i ${CMAKE_CXX_COMPILE_FEATURES})
  message("${i}")
endforeach()</code>

대부분의 경우 지정할 필요가 없습니다. C 기능을 직접 지정하는 대신 필요한 C 기능을 지정하고 CMake가 C 표준을 추론하도록 합니다. 그러면 CMake는 올바른 플래그(예: -std=c 11)를 사용하여 컴파일러가 호출되는지 확인합니다.

C 표준을 명시적으로 선언

<code class="cmake"># Explicitly set C++ standard and required features
add_executable(prog main.cc)
set_property(TARGET prog PROPERTY CXX_STANDARD 11)
set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)</code>

대상 컴파일 기능 사용

<code class="cmake"># Specify required C++ features and let CMake deduce the C++ standard
target_compile_features(foobar PRIVATE
  cxx_strong_enums
  cxx_constexpr
  cxx_auto_type)</code>

위 내용은 CMake를 사용하여 컴파일러에서 C 11 지원을 감지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.