내가 유지 관리하는 라이브러리에는 pthreads에 의존하는 몇 가지 기능이 있습니다. 이 프로젝트는 automake를 사용합니다. 필자는 pthread에 대한 의존성을 비활성화하기 위해 configure 옵션을 만들고 싶습니다. pthread는 단순히 그 함수를 컴파일하면 안됩니다. (이유는 특정 크로스 컴파일 및 포함 된 대상입니다.)automake를 사용하는 라이브러리에 대해 선택적 public 유형/함수를 처리하는 올바른 방법은 무엇입니까?
이 함수가 포함 된 파일을 컴파일하지 않아도 지금까지는 정상적으로 작동하지만 이제는 이러한 함수와 공용 헤더에서 사용하는 구조체가 공용 헤더에 정의되어 있습니다.
- 도서관 유지 관리 관점에서 올바른 접근 방법은 무엇입니까?
- 공용 헤더에서 유형 또는 기능을 선택하는 올바른 방법은 무엇입니까?
처음에 나는 autoconf를 입력 (.IN) 파일로 헤더를 설정하고 선택적으로 제거 이러한 기능과 유형 헤더를 생성해야합니다 생각했다.
하지만 다른 버전의 라이브러리가 동시에 설치되는 시스템은 어떻습니까? 일반적으로 이들은 헤더를 공유 할 수 있어야합니다.
이러한 기능을 사용하지 않으려면 헤더에 전 처리기를 사용하고, pkg-config
을 사용하여 명령 줄 옵션으로 지정해야합니까?
또 다른 아이디어는 이러한 함수와 유형을 고유 한 헤더로 이동하고 pthreads가 비활성화되었을 때이 헤더를 설치하지 않는 것입니다. 이것은 머리말의 조직을 약간 어지럽히는 것을 의미 할 것이나, 아마 제일 아이디어 일 것입니다. 나는 당신의 의견을 원하지만 라이브러리의 공개 헤더에서 옵션 기능을 처리하는 가장 좋은 방법은 무엇입니까?