儘管閱讀文檔,我無法弄清楚CMake的命令find_library
是否搜索LD_LIBRARY_PATH
中列出的目錄。是否CMake的find_library搜索LD_LIBRARY_PATH?
我的測試給出了不同的結果。
儘管閱讀文檔,我無法弄清楚CMake的命令find_library
是否搜索LD_LIBRARY_PATH
中列出的目錄。是否CMake的find_library搜索LD_LIBRARY_PATH?
我的測試給出了不同的結果。
從文檔(我沒有複製相關文本CMake的變量也沒有find_library
參數,這是不是與此有關):
如果
NO_DEFAULT_PATH
指定,則沒有其他路徑添加到搜索。如果未指定NO_DEFAULT_PATH
,則搜索過程如下:...
- 搜索標準的系統環境變量。如果
NO_SYSTEM_ENVIRONMENT_PATH
是一個參數,這可以跳過。
- 目錄在
LIB
。在Windows主機上:<prefix>/lib/<arch>
如果CMAKE_LIBRARY_ARCHITECTURE
設置,並<prefix>/lib
爲PATH
每個<prefix>/[s]bin
和<entry>/lib
其他條目PATH
,並且在PATH
本身的目錄。...
所以LD_LIBRARY_PATH
不使用find_library
。這是確認閱讀source code。
您的測試的混合結果可能來自其他變量,但沒有這些測試的詳細描述,這只是一個猜測。
根據目前的文檔和一個小測試,似乎LD_LIBRARY_PATH
不考慮。
爲find_library
文檔說
如果指定
NO_DEFAULT_PATH
,則沒有附加的路徑添加到 搜索。如果沒有指定NO_DEFAULT_PATH
時,搜索 過程如下:在特定的CMake緩存變量指定
- 搜索路徑。這些 旨在用於帶有
-DVAR=value
的命令行。 如果通過NO_CMAKE_PATH
,則可以跳過該步驟。
<prefix>/lib/<arch>
如果CMAKE_LIBRARY_ARCHITECTURE被設置, 和<prefix>/lib
每個<prefix>
在CMAKE_PREFIX_PATH
CMAKE_LIBRARY_PATH
CMAKE_FRAMEWORK_PATH
在特定的cmake-環境變量指定- 搜索路徑。 這些旨在在用戶的shell配置中設置。 如果通過
NO_CMAKE_ENVIRONMENT_PATH
,則可以跳過該步驟。
<prefix>/lib/<arch>
如果CMAKE_LIBRARY_ARCHITECTURE
在CMAKE_PREFIX_PATH
CMAKE_LIBRARY_PATH
CMAKE_FRAMEWORK_PATH
- 搜索由
HINTS
選項指定的路徑上設置的,並<prefix>/lib
每個<prefix>
。這些應該是 由系統內省計算的路徑,例如 提供的提示已找到另一個項目的位置。應使用PATHS
選項指定硬編碼猜測 。- 搜索標準系統環境變量。如果
NO_SYSTEM_ENVIRONMENT_PATH
是參數,則可跳過 。
- 目錄中
LIB
,<prefix>/lib/<arch>
如果CMAKE_LIBRARY_ARCHITECTURE
設置,並在PATH
<prefix>/lib
爲 每個<prefix>/[s]bin
,並在PATH
<entry>/lib
其他 條目,並在PATH
本身的目錄。- 搜索 當前系統的Platform文件中定義的cmake變量。如果
NO_CMAKE_SYSTEM_PATH
通過了 ,則可以跳過該步驟。
<prefix>/lib/<arch>
如果CMAKE_LIBRARY_ARCHITECTURE
被設置, 和<prefix>/lib
每個<prefix>
在CMAKE_SYSTEM_PREFIX_PATH
CMAKE_SYSTEM_LIBRARY_PATH
CMAKE_SYSTEM_FRAMEWORK_PATH
- 搜索由
PATHS
選項或在 速記版本中指定的路徑的命令。這些通常是硬編碼的 猜測。
由於CMAKE_PREFIX_PATH
CMAKE_LIBRARY_PATH
和被指定爲空(默認),問題是等效於以下:是由LD_LIBRARY_PATH
或CMAKE_SYSTEM_PREFIX_PATH
考慮CMAKE_SYSTEM_LIBRARY_PATH
。根據我用CMake 3.7所做的簡單測試。1,LD_LIBRARY_PATH
不被他們考慮。
也許您在尋找LIBRARY_PATH?對於gcc還有--print-search-dirs – arved