>백엔드 개발 >C++ >C 소스 코드에서 CMake 변수에 액세스하는 방법은 무엇입니까?

C 소스 코드에서 CMake 변수에 액세스하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-02 16:23:021097검색

How to Access CMake Variables in C   Source Code?

C 소스 코드에서 CMake 변수에 액세스

문제:
다음과 같은 CMake 변수는 어떻게 가능합니까? LIBINTERFACE_VERSION을 C 소스 코드 내에서 액세스하고 사용할 수 있습니까?

답변:

옵션 1: add_definitions 사용

  • add_definitions()를 사용하여 CMake 변수를 정의로 전달합니다.
  • 예:

    <code class="cmake">add_definitions( -DVERSION_LIBINTERFACE=${LIBINTERFACE_VERSION} )</code>
  • 이를 통해 CMake 변수를 C 코드에서 다음과 같이 정의할 수 있습니다. 매크로(#define).

옵션 2: 헤더 파일 템플릿과 함께configure_file 사용

  • CMake 변수가 포함된 헤더 파일 템플릿 생성
  • 예:

    <code class="cmake">// version_config.h.in
    #ifndef VERSION_CONFIG_H
    #define VERSION_CONFIG_H
    
    // define your version_libinterface
    #define VERSION_LIBINTERFACE @LIBINTERFACE_VERSION@
    
    // alternatively you could add your global method getLibInterfaceVersion here
    unsigned int getLibInterfaceVersion()
    {
      return @LIBINTERFACE_VERSION@;
    }
    
    #endif // VERSION_CONFIG_H</code>
  • configure_file()을 사용하여 CMake 변수를 해당 값으로 바꾸는 헤더 파일을 생성합니다.
  • 예:

    <code class="cmake">configure_file( version_config.h.in ${CMAKE_BINARY_DIR}/generated/version_config.h )
    include_directories( ${CMAKE_BINARY_DIR}/generated/ ) # Make sure it can be included...</code>
  • 생성된 헤더 파일을 C 소스 코드에 포함합니다.

사용 예:

<code class="cpp">// Assuming version_config.h is included
std::string version = VERSION_LIBINTERFACE;</code>

참고:
configure_file() 메서드는 생성된 헤더 파일에 추가 변수나 정의를 추가할 수 있으므로 확장성이 더 뛰어납니다.

위 내용은 C 소스 코드에서 CMake 변수에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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