qmake: Add QMAKE_SONAME_PREFIX variable
If defined, the value of this variable is prepended to the built shared library's SONAME identifier. For more information, see: qmake/doc/src/qmake-manual.qdoc#qmake-soname-prefix Task-number: QTBUG-31814 Change-Id: I4bceaf0c93162e4fad6bb424af1b82e74d38acdc Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
This commit is contained in:
parent
935186d76e
commit
af155105a9
@ -970,3 +970,15 @@ int main() { return featureFunction(); }
|
||||
# <project root>/project.pro
|
||||
qtCompileTest(test)
|
||||
#! [182]
|
||||
|
||||
#! [183]
|
||||
# <project root>/project.pro
|
||||
QMAKE_SONAME_PREFIX = @rpath
|
||||
#! [183]
|
||||
|
||||
#! [184]
|
||||
# <project root>/project.pro
|
||||
QMAKE_SONAME_PREFIX = @executable_path/../Frameworks
|
||||
QMAKE_SONAME_PREFIX = @loader_path/Frameworks
|
||||
QMAKE_SONAME_PREFIX = /Library/Frameworks
|
||||
#! [184]
|
||||
|
@ -2071,6 +2071,39 @@
|
||||
qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
|
||||
needs to be modified.
|
||||
|
||||
\section1 QMAKE_SONAME_PREFIX
|
||||
|
||||
If defined, the value of this variable is used as a path to be prepended to
|
||||
the built shared library's \c SONAME identifier. The \c SONAME is the
|
||||
identifier that the dynamic linker will later use to reference the library.
|
||||
In general this reference may be a library name or full library path. On OS
|
||||
X and iOS, the path may be specified relatively using the following
|
||||
placeholders:
|
||||
|
||||
\table
|
||||
\header \li Placeholder \li Effect
|
||||
\row \li @rpath
|
||||
\li Expands to paths defined by LC_RPATH mach-o commands in
|
||||
the current process executable or the referring libraries.
|
||||
\row \li @executable_path
|
||||
\li Expands to the current process executable location.
|
||||
\row \li @loader_path
|
||||
\li Expands to the referring executable or library location.
|
||||
\endtable
|
||||
|
||||
In most cases, using \c @rpath is sufficient and recommended:
|
||||
|
||||
\snippet code/doc_src_qmake-manual.pro 183
|
||||
|
||||
However, the prefix may be also specified using different placeholders, or
|
||||
an absolute path, such as one of the following:
|
||||
|
||||
\snippet code/doc_src_qmake-manual.pro 184
|
||||
|
||||
For more information, see
|
||||
\l{https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/dyld.1.html}{dyld}
|
||||
documentation on dynamic library install names.
|
||||
|
||||
\section1 QMAKE_TARGET
|
||||
|
||||
Specifies the name of the project target. The value of this
|
||||
|
@ -1265,6 +1265,13 @@ void UnixMakefileGenerator::init2()
|
||||
if(!instpath.endsWith(Option::dir_sep))
|
||||
instpath += Option::dir_sep;
|
||||
soname.prepend(instpath);
|
||||
} else if (!project->isEmpty("QMAKE_SONAME_PREFIX")) {
|
||||
QString sonameprefix = project->first("QMAKE_SONAME_PREFIX").toQString();
|
||||
if (!sonameprefix.startsWith('@') && !sonameprefix.startsWith('$'))
|
||||
sonameprefix = Option::fixPathToTargetOS(sonameprefix, false);
|
||||
if (!sonameprefix.endsWith(Option::dir_sep))
|
||||
sonameprefix += Option::dir_sep;
|
||||
soname.prepend(sonameprefix);
|
||||
}
|
||||
project->values("QMAKE_LFLAGS_SONAME").first() += escapeFilePath(soname);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user