플러그인 아키텍처를 사용하여 C 프로그램을 개발 중입니다. 우리는 두 .rpm
패키지를 모두 빌드하고 패키징합니다 .deb
.
일부 플러그인에는 해당 플러그인에서만 사용할 수 있는 이미지 파일이나 스크립트 파일과 같은 추가 비바이너리 리소스가 있습니다. 이러한 추가 리소스는 플러그인 파일과 동일한 디렉터리에 있습니다 .so
. 따라서 플러그인은 관련 파일을 열려면 디스크의 위치와 동일한 디렉터리에 있어야 합니다.
이를 수행하는 표준 또는 적어도 다소 관용적인 방법이 있습니까?
특히 /usr/lib/<foo>/plugins
일부 배포판 에서는 /usr/lib64
vs./usr/lib
또한 개발 중에는 프로그램(및/또는 플러그인)이 표준 위치에 설치되지 않습니다. 이는 사용자 홈 폴더 내의 소스 코드 하위 디렉터리에서 실행되며, 이 경우 플러그인 폴더는 개발 중인 바이너리와 약간 다른 상대 위치에 있습니다.
편집하다: 구체적인 예를 들자면, 프로젝트의 소스 코드 트리에는 디렉터리가 foo
있습니다 plugins
. 포함된 표준 플러그인 중 일부가 이 디렉토리 foo
에 저장됩니다 . plugins
플러그인 중 하나가 pyconsole
이에 의존하며 foo_pycon.py
, 이는 plugins\pyconsole\
디렉토리에도 있습니다.
개발 중에 다양한 지점의 다양한 작업을 위해 홈 디렉터리에 여러 개의 저장소 복사본이 있을 수 있습니다. 작업 복사본은 에 있을 수 있습니다 ~\src\foo_branch\
.
foo
저는 로컬로 구축된 인스턴스를 인스턴스라고 부릅니다 ~\src\foo_branch\release_x86_64\bin\foo
. foo
을 포함하여 모든 플러그인을 상대 하위 디렉터리에 배치합니다 ~\src\foo_branch\release_x86_64\lib\plugins\pyconsole.so
.
pyconsole.so
이 특정 인스턴스가 자신의 인스턴스를 열고 사용할 수 있도록 위치를 알려주 는 표준 또는 관용적 방법이 있습니까 foo_pycon.py
?
패키지를 통해 설치하는 경우 상대 경로가 다를 수 있습니다. 설치된 바이너리의 위치 와 마찬가지로 /usr/bin/foo
플러그인을 /usr/lib[64]/foo/plugins
.