Trotz Lesen der Dokumentation kann ich nicht herausfinden, ob CMake Befehl find_library
sucht oder nicht die Verzeichnisse in LD_LIBRARY_PATH
aufgeführt.Sucht CMake's find_library Suche LD_LIBRARY_PATH?
Meine Tests ergeben gemischte Ergebnisse.
Trotz Lesen der Dokumentation kann ich nicht herausfinden, ob CMake Befehl find_library
sucht oder nicht die Verzeichnisse in LD_LIBRARY_PATH
aufgeführt.Sucht CMake's find_library Suche LD_LIBRARY_PATH?
Meine Tests ergeben gemischte Ergebnisse.
Aus der Dokumentation (ich den Text nicht wiedergegeben hat bezogenen Variablen noch Parameter find_library
, cmake, die hier nicht relevant sind):
Wenn
NO_DEFAULT_PATH
angegeben ist, keine zusätzlichen Wege zu den hinzugefügt Suche. WennNO_DEFAULT_PATH
nicht angegeben wird, ist der Suchprozess wie folgt:...
- die Standard-Systemumgebungsvariablen suchen. Dies kann übersprungen werden, wenn
NO_SYSTEM_ENVIRONMENT_PATH
ein Argument ist.
- Verzeichnisse in
LIB
. Auf Windows-Hosts:<prefix>/lib/<arch>
wennCMAKE_LIBRARY_ARCHITECTURE
gesetzt und<prefix>/lib
für jeden<prefix>/[s]bin
inPATH
und<entry>/lib
für andere Einträge inPATH
, und die Verzeichnisse inPATH
selbst....
So wird LD_LIBRARY_PATH
nicht von find_library
verwendet. Dies wird bestätigt durch Lesen der source code.
Die gemischten Ergebnisse Ihrer Tests können von einer anderen Variablen stammen, aber ohne eine detaillierte Beschreibung dieser Tests ist dies nur eine Vermutung.
Laut der aktuellen Dokumentation und einem kleinen Test scheint es, dass LD_LIBRARY_PATH
nicht berücksichtigt wird.
Die Dokumentation für find_library
sagt
Wenn
NO_DEFAULT_PATH
angegeben ist, keine zusätzlichen Wege zur Suche hinzugefügt werden. WennNO_DEFAULT_PATH
nicht angegeben ist, ist die Suche Prozess wie folgt:
- Suchpfade in Cmake spezifischen Cache Variablen angegeben. Diese sind für die Verwendung in der Befehlszeile mit einem
-DVAR=value
vorgesehen. Dies kann übersprungen werden, wennNO_CMAKE_PATH
übergeben wird.
<prefix>/lib/<arch>
wenn CMAKE_LIBRARY_ARCHITECTURE gesetzt, und<prefix>/lib
für jede<prefix>
inCMAKE_PREFIX_PATH
CMAKE_LIBRARY_PATH
CMAKE_FRAMEWORK_PATH
- Suchpfade angegeben in Cmake spezifischen Umgebungsvariablen. Diese Einstellungen werden in der Shell-Konfiguration des Benutzers festgelegt. Dies kann übersprungen werden, wenn
NO_CMAKE_ENVIRONMENT_PATH
übergeben wird.
<prefix>/lib/<arch>
wennCMAKE_LIBRARY_ARCHITECTURE
gesetzt, und<prefix>/lib
für jede<prefix>
inCMAKE_PREFIX_PATH
CMAKE_LIBRARY_PATH
CMAKE_FRAMEWORK_PATH
- die Pfade durch die
HINTS
Option angegeben suchen. Diese sollten Pfade sein, die durch Systemintrospektion berechnet wurden, wie z. B. ein Hinweis, der von dem Speicherort eines anderen bereits gefundenen Elements bereitgestellt wird. Hartcodierte Vermutungen sollten mit der OptionPATHS
angegeben werden.- Durchsuchen Sie die Standardsystemumgebungsvariablen. Dies kann übersprungen werden, wenn
NO_SYSTEM_ENVIRONMENT_PATH
ein Argument ist.
- Verzeichnisse in
LIB
,<prefix>/lib/<arch>
wennCMAKE_LIBRARY_ARCHITECTURE
gesetzt und<prefix>/lib
für jeden<prefix>/[s]bin
inPATH
und<entry>/lib
für andere Einträge inPATH
, und die Verzeichnisse inPATH
selbst.- Durchsuchen Sie Cmake-Variablen, die in den Platform-Dateien für das aktuelle System definiert sind. Dies kann übersprungen werden, wenn
NO_CMAKE_SYSTEM_PATH
übergeben wird.
<prefix>/lib/<arch>
wennCMAKE_LIBRARY_ARCHITECTURE
gesetzt, und<prefix>/lib
für jede<prefix>
inCMAKE_SYSTEM_PREFIX_PATH
CMAKE_SYSTEM_LIBRARY_PATH
CMAKE_SYSTEM_FRAMEWORK_PATH
- Suche der angegebenen Pfade durch die
PATHS
Option oder in der Kurz Hand-Version des Befehls. Diese sind typischerweise fest codierte Vermutungen.
Da CMAKE_PREFIX_PATH
und CMAKE_LIBRARY_PATH
angegeben leer sein (Standardeinstellung), ist die Frage, entspricht der folgenden: Ist LD_LIBRARY_PATH
betrachtet von CMAKE_SYSTEM_PREFIX_PATH
oder CMAKE_SYSTEM_LIBRARY_PATH
. Nach einem einfachen Test habe ich mit CMake 3.7 gemacht.1, LD_LIBRARY_PATH
wird von ihnen nicht berücksichtigt.
Vielleicht suchen Sie nach LIBRARY_PATH? Für gcc gibt es auch die --print-search-dirs – arved