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

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

DDD
DDD원래의
2024-10-29 18:16:15775검색

How to Access CMake Variables from Within C   Source Code?

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

CMake로 작업할 때 프로젝트 전체 정보를 중앙 집중식 변수에 저장하는 것이 바람직한 경우가 많습니다. 이를 통해 쉽게 관리하고 액세스할 수 있습니다. 그러나 C 소스 코드 내에서 이러한 변수에 직접 액세스하는 것은 어려울 수 있습니다.

CMake 변수 선언

제공된 시나리오에서 CMake 변수 LIBINTERFACE_VERSION은 라이브러리의 변수를 저장하도록 정의됩니다. 버전 번호:

<code class="cmake">SET(LIBINTERFACE_VERSION 1 CACHE INTEGER "Version of libInterface")</code>

C에서 변수에 액세스

C에서 LIBINTERFACE_VERSION에 액세스하려면 다음 두 가지 방법 중 하나를 사용할 수 있습니다.

1. add_definitions

add_definitions() 함수를 사용하면 CMake 변수를 컴파일러에 정의로 전달할 수 있습니다.

<code class="cmake">add_definitions( -DVERSION_LIBINTERFACE=${LIBINTERFACE_VERSION} )</code>

C 코드 내에서 다음과 같이 변수에 액세스할 수 있습니다.

<code class="cpp">#include <version_config.h>
unsigned int version = VERSION_LIBINTERFACE;</code>

2. configure_file

configure_file()을 사용하여 CMake 변수가 대체되는 헤더 파일 템플릿(예: version_config.h.in)을 만들 수도 있습니다.

<code class="cmake"># version_config.h.in
#ifndef VERSION_CONFIG_H
#define VERSION_CONFIG_H

// Define version_libinterface
#define VERSION_LIBINTERFACE @LIBINTERFACE_VERSION@
#endif // VERSION_CONFIG_H

configure_file( version_config.h.in ${CMAKE_BINARY_DIR}/generated/version_config.h )
include_directories( ${CMAKE_BINARY_DIR}/generated/ )</code>

C 내에서 그런 다음 생성된 헤더 파일을 포함할 수 있습니다.

<code class="cpp">#include "version_config.h"
unsigned int version = VERSION_LIBINTERFACE;</code>

이 접근 방식은 헤더 파일에 여러 정의 또는 변수를 통합할 수 있는 추가적인 유연성을 제공합니다.

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

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