[英]Pythonlibs3 CMake and macOS
[更新2]
以下兩行,當添加到我的CMake文件中時,成功找到了python 3及其庫。 這只是在終端工作的原因是因為CLion正在使用其捆綁版本的CMake(3.6.3)和我終端使用的更新版本(3.7.2)正確找到python。
FIND_PACKAGE(PythonInterp 3)
FIND_PACKAGE(PythonLibs 3)
[UPDATE]我得到了cmake文件,但是,當我從終端運行時它只找到python3庫。 從CLion運行時,我收到以下錯誤:
CMake錯誤:此項目中使用以下變量,但它們設置為NOTFOUND。 請設置它們或確保它們在CMake文件中正確設置和測試:PYTHON_LIBRARY(ADVANCED)
[原始帖子]
我正在開發一個跨平台的C ++應用程序,並使用PythonLibs 3和boost_python來從python調用c ++方法。 在ubuntu這工作正常但是,在macOS上,我似乎無法讓cmake識別pythonlibs3。
在ubuntu上,以下行有效:
FIND_PACKAGE(PythonLibs 3 REQUIRED)
但是,在macOS上,它只能在/usr/libs/
pythonlibs 2.7.10。
我嘗試過以下方法:
set(Python_ADDITIONAL_VERSIONS 3.6)
添加到我的cmake 其他信息:
FIND_PACKAGE(PythonInterp 3)
cmake能夠找到我的python3安裝。 /usr/lib/
文件夾時,我找到了libpython2.7.dylib
但我在/usr/lib/
或/usr/local/lib/
沒有libpython3.6/dylib
。 這似乎是因為這個文件位於/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib
。 如果我將libpython3.6的位置添加到我的find_package中,
FIND_PACKAGE(PythonLibs 3 PATHS /usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/ REQUIRED)
它能夠找到庫但我得到錯誤:
找不到“PythonLibs”提供的包配置文件
(請求的版本3)具有以下任何名稱:PythonLibsConfig.cmake pythonlibs-config.cmake
將“PythonLibs”的安裝前綴添加到CMAKE_PREFIX_PATH或將“PythonLibs_DIR”設置為包含上述文件之一的目錄。 如果“PythonLibs”提供單獨的開發包或SDK,請確保它已安裝。
另外,如果我嘗試在不使用find_package的情況下設置python變量,它可以找到庫:
SET(PYTHON_INCLUDE_PATH /usr/local/include/python3.6mu) SET(PYTHON_EXECUTABLE /usr/local/bin/python3.6mu) SET(PYTHON_INCLUDE_DIR /usr/local/include/python3.6mu) SET(PYTHON_LIBRARIES /usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/)
但是后來我的cmake中出現了以下錯誤:
PYTHON_ADD_MODULE(${PYRITMO_LIB} src/pythonwrappers.cpp)
錯誤如下:
未知的CMake命令“PYTHON_ADD_MODULE”。
原因似乎是因為此函數由FindPythonLibs.cmake
提供,它由find_package(Pythonlibs)
加載,因此,如果不使用它來定位PythonLibs,則無法調用此函數。
如上所述,在問題更新中,轉到CMake 3.7.2並使用以下兩行修復了我的問題:
FIND_PACKAGE(PythonInterp 3)
FIND_PACKAGE(PythonLibs 3)
[更新]對於使用Google Test並通過CMake安裝的任何人,將上述行放在Google Test代碼之前非常重要。 這是因為Google測試會查找python,並找到python2,然后當這兩行運行時,他們將無法找到python 3。
如果這兩行放在Google Test安裝代碼之前,則會找到python3並用於google測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.