jjzjj

Pythonlibs3 CMake 和 macOS

coder 2024-02-17 原文

[更新 2]

以下两行,当添加到我的CMake文件中时,成功找到了python 3及其库。这仅在终端中起作用的原因是因为 CLion 使用其捆绑版本的 CMake (3.6.3),而我的终端使用的更新版本 (3.7.2) 正确找到了 python。

FIND_PACKAGE(PythonInterp 3)
FIND_PACKAGE(PythonLibs 3)

[更新] 我让 cmake 文件可以工作,但是,当我从终端运行时它只找到 python3 库。从 CLion 运行时,出现以下错误:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: 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

我尝试了以下方法:

  1. 使用 python3 虚拟环境,然后运行 ​​cmake。
  2. set(Python_ADDITIONAL_VERSIONS 3.6) 添加到我的 cmake

其他信息:

  • 我用 brew 安装了 python3 (3.6),它位于/usr/local/bin
  • 我使用的是 cmake 版本 3.6.3
  • 当我编写 FIND_PACKAGE(PythonInterp 3) 时,cmake 能够找到我的 python3 安装。
  • 当检查我的 /usr/lib/ 文件夹时,我找到了 libpython2.7.dylib 但我没有 libpython3.6/dylib/usr/lib//usr/local/lib/ 中。这似乎是因为这个文件位于 /usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib

如果我将 libpython3.6 的位置添加到我的 find_package,

FIND_PACKAGE(需要 PythonLibs 3 路径/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/)

它能够找到库,但随后出现错误:

Could not find a package configuration file provided by "PythonLibs"
(requested version 3) with any of the following names:

PythonLibsConfig.cmake
pythonlibs-config.cmake

Add the installation prefix of "PythonLibs" to CMAKE_PREFIX_PATH or set "PythonLibs_DIR" to a directory containing one of the above files. If "PythonLibs" provides a separate development package or SDK, be sure it has been installed.

此外,如果我尝试在不使用 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)

错误如下:

Unknown CMake command "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 代码之前是很重要的。这是因为谷歌测试会找python,会找python2,那么运行这两行的时候,就找不到python 3了。

如果这两行放在谷歌测试安装代码之前,那么 python3 将被找到并用于谷歌测试。

关于Pythonlibs3 CMake 和 macOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42445169/

有关Pythonlibs3 CMake 和 macOS的更多相关文章

  1. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  2. ruby - 找不到 macOS Mojave 'ruby/config.h' 文件 - 2

    当我尝试在macOSMojave(10.14.1)上构建带有ruby​​支持(--enable-rubyinterp)的vim(8.1.0509)时,出现错误:Infileincludedfrom/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby.h:33:/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby/ruby.h:24:10:fatalerror:'ru

  3. ruby - 无法在 MacOS 10.14.2 Mojave : Error running '__rvm_make -j4' 上使用 RVM 安装任何 Ruby - 2

    将MacOS升级到10.14.2Mojave后,我无法再使用RVM安装任何Ruby版本。它总是给出这样的错误:$rvminstall2.5.3ruby-2.5.3-#removingsrc/ruby-2.5.3..Searchingforbinaryrubies,thismighttakesometime.Nobinaryrubiesavailablefor:osx/10.14/x86_64/ruby-2.5.3.Continuingwithcompilation.Pleaseread'rvmhelpmount'togetmoreinformationonbinaryrubies.Ch

  4. ruby-on-rails - macOS 10.12 Sierra 上的 bundle 错误 - 2

    Ignoringbinding_of_caller-0.7.2becauseitsextensionsarenotbuilt.Try:gempristinebinding_of_caller--version0.7.2Ignoringbyebug-9.0.6becauseitsextensionsarenotbuilt.Try:gempristinebyebug--version9.0.6Ignoringcapybara-webkit-1.11.1becauseitsextensionsarenotbuilt.Try:gempristinecapybara-webkit--versio

  5. ruby - 将 OSX 更新到 10.13 (macOS High Sierra) 后不编译 SCSS - 2

    考拉版本:2.2.0Errormessage:/scss/styles.scss/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/dependency.rb:319:into_specs':Couldnotfind'sass'(>=0)among15totalgem(s)(Gem::LoadError)Checkedin'GEM_PATH=/Users/monstercritic/.gem/ruby/2.3.0:/Library/Ruby/Gems/2.3.0:/Syst

  6. ruby - 无法通过 rbenv macOS High Sierra 安装 ruby​​ 2.5.0 - 2

    我正在使用macOSHighSierra并一直在尝试通过rbenv安装ruby​​2.5.0但不断收到如下错误AppleLLVMversion9.0.0(clang-900.0.39.2)Target:x86_64-apple-darwin17.4.0Threadmodel:posixInstalledDir:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bincompiling./main.ccompilingdmydln.ccompilingminiinit.cc

  7. ruby - 我如何让 IntelliJ 在 MacOS X 上获取我的环境变量? - 2

    我尝试使用RCenvironment、.bashrc、.MacOSX/environment.plist和/etc/launchd.conf设置这些并重新启动计算机....IntelliJ仍然没有获取我的环境变量:gem文件p"ENVIRONMENT:#{ENV['VAR_PRIVATE_GEM_USERNAME']}"#输出"ENVIRONMENT:" 最佳答案 查看相关问题:https://apple.stackexchange.com/q/51677https://apple.stackexchange.com/q/57385

  8. ruby - 如何在 Travis CI 的 macOS 中更改 Homebrew 的 Ruby 版本? - 2

    努力奔跑if[["$TRAVIS_OS_NAME"=="osx"]];thenbrewinstallpython3;fi在before_install中,我最终得到了/usr/local/Homebrew/Library/Homebrew/brew.rb:12:in\`':HomebrewmustberununderRuby2.3!(RuntimeError)Thecommand"if[["$TRAVIS_OS_NAME"=="osx"]];thenbrewinstallpython3;fi"failedandexitedwith1during.Yourbuildhasbeenstop

  9. ruby - 如何在 macOS 上卸载 rbenv? - 2

    如何在macOS上卸载rbenv?我的rbenv版本一团糟,brewuninstallrbenv无法正常工作,因为brew依赖于ruby​​。 最佳答案 我采取了这些步骤,成功地摆脱了运行ElCapitan(10.11.4)的mac上的rbenv。根据我的经验,Rbenv是Failedtobuildgemnativeextensionerrors的主要原因。使用brew删除:brewremoverbenv删除.rbenv目录:rm-rf~/.rbenv对于Bash打开.bash_profile文件并删除其中包含rbenv的所有行:v

  10. ruby - 如何在 MacOS 上使用 "RVM --default" - 2

    在使用Ruby和Rails一段时间后,我想试试RVM。一切正常,除了一件事:在新打开的终端中,ruby指向系统的ruby​​,尽管我使用了rvm--default命令。user@terra~$ruby-vruby1.8.7(2010-08-16patchlevel302)[i686-darwin10]user@terra~$whichruby/opt/local/bin/rubyuser@terra~$rvmlistruby-1.8.7-p334[]=>ruby-1.9.2-p180[]调用rvmreload后一切正常user@terra~$rvmreloaduser@terra~$r

随机推荐