다른 빌드 옵션 다루기

curl과 libcurl 소스 코드는 실제로 존재하는 가상적으로 모든 컴퓨터 플랫폼에서 빌드되고 실행되도록 신중하게 작성되었다. 이것은 어려운 작업을 통해서만 완성할 수 있었으며, 몇가지 지침(물론 상당한 양의 테스트)을 준수해야 한다.

황금 룰은 항상 특정 기능을 검사하는 #ifdef를 를 추가한 다음, 프로그램이 컴파일되기 전에 사용자의 컴퓨터 설정에서 해당 기능의 존재 여부를 확인하는 설정 스크립트(configure 또는 CMake 또는 하드 코드) 확인을 갖는 것이다. 또한 보너스 코드로, 코드를 작성하는 이러한 방법 덕분에, 일부 기능들은 시스템에 존재하더라도 명시적으로 기능을 off시킬 수 있고, 사용될 수도 있다. 예를 들어, 사용자가 더 작은 공간을 갖는 라이브러리의 버전을 빌드하거나 특정 프로토콜을 사용할 수 없도록 설정하려는 경우가 그 예이다.

예를 들어, 단일 파일이 특정 운영 체제를 위해 또는 항상 존재하지 않는 특정 기능에 대해 제공될 경우에 전체 소스 파일에 대해 #ifdef 보호 기능을 사용한다. 이것은 모든 파일들을 항상 빌드하도록 모든 플랫폼에서 가능하도록 만들어 준다. 이것은 빌드 스크립트와 makefile을 훨씬 단순하게 만들어 준다. 어쨋든 전체적으로 #ifdef으로 묶인 파일은 빌드 타임에 아무것도 추가하지 않는다.

#ifdef로 코드를 막는 방법보다, 가능한 곳에 확장하기 위해, 우리는 현재의 기능들의 독립, 코드가 같아 보이고 같은 작업을 하도록 하기 위해서 함수와 매크로를 제공한다. 그 중 일부는 기능들을 제약하는 빌드를 위한 비어있는 매크로이다.

TLS 처리와 이름 해석은 특정 구현과 타사 소프트웨어 라이브러리의 선택을 감추는 내부 API로 처리된다. 그런 식으로 대부분의 내부 동작은 TLS 라이브러리 또는 시스템 libcurl이 사용하라는 이름 해석과 독립적으로 동작한다.

results matching ""

    No results matching ""