템플릿 = lib 시대에 대상에 대한 상징적 링크를 만들지 않도록 qmake를 강제하는 방법?
문제
다음과 같은 (부분) 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
구성하려면 상징적 링크없이 라이브러리 만 생성됩니다.
그래도 그렇게하는 것이 다른 부작용이 있는지 말할 수 없습니다. 그러나 건축 후 실행되는 스크립트를 작성하지 않고도 상징적 링크를 제거하는 유일한 방법 인 것 같습니다.
왜 중요한지에 대한 힌트를 주면 도움이 될 수 있습니다 ...
어떻게, 빌드 프로세스의 끝에서 실행되는 취향에 맞게 물건을 재 배열하는 스크립트를 고려할 수 있습니다.