템플릿 = lib 시대에 대상에 대한 상징적 링크를 만들지 않도록 qmake를 강제하는 방법?

StackOverflow https://stackoverflow.com/questions/1074050

  •  21-08-2019
  •  | 
  •  

문제

다음과 같은 (부분) Qmake 프로젝트 파일이 있습니다.

TEMPLATE=lib
TARGET=whatever
SOURCES=whatever.cpp
HEADERS=whatever.h

이것은 기본적으로 적어도 - 라이브러리와 이와 같은 몇 가지 상징적 링크를 만듭니다.

libwhatever.so -> libwhatever.so.0.1.0
libwhatever.so.0 -> libwhatever.so.0.1.0
libwhatever.so.0.1 -> libwhatever.so.0.1.0
libwhatever.so.0.1.0

libwhatever.so.0.1.0 실제 라이브러리 바이너리이며 나머지는 단지 상징적 링크입니다.

내가 달성하고 싶은 것은 상징적 링크가 전혀 생성되지 않거나 다른 방법으로 순서가 없다는 것입니다. libwhatever.so 실제 이진이 될 것이며 상징적 인 링크입니다.

도움이 되었습니까?

해결책

NO-OP로 qmake_ln_shlib 변수를 무시하면 상징적 링크가되지 않습니다.

QMAKE_LN_SHLIB       = :

다른 팁

Swarfrat에 의해 게시 된 제안을 시도했지만 작동하지만 (도움이되는) 메시지로 오류를 출력합니다.

Error 1 (ignored)

따라서 여기에 오류를 생성하지 않고 Symlinks를 삭제하는 또 다른 방법이 있습니다.

unix: QMAKE_POST_LINK = find $$DESTDIR -maxdepth 1 -type l -exec rm -f {} \;

이 QMake 변수에 대한 자세한 내용은 찾을 수 있습니다 여기.

Pro 파일에 아래를 추가 할 수 있습니다.

CONFIG += unversioned_libname unversioned_soname

나는 성공을 테스트했다.

나는 Qmake 소스와 MKSPECS를 연구했지만 상징적 링크의 생성은 다소 용이한 것으로 보인다.

출처에서 찾은 것에서 추가하면 plugin 구성하려면 상징적 링크없이 라이브러리 만 생성됩니다.

그래도 그렇게하는 것이 다른 부작용이 있는지 말할 수 없습니다. 그러나 건축 후 실행되는 스크립트를 작성하지 않고도 상징적 링크를 제거하는 유일한 방법 인 것 같습니다.

왜 중요한지에 대한 힌트를 주면 도움이 될 수 있습니다 ...

어떻게, 빌드 프로세스의 끝에서 실행되는 취향에 맞게 물건을 재 배열하는 스크립트를 고려할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top