2013-03-08 161 views

回答

17

嘗試添加-DPYTHON_EXECUTABLE:FILEPATH=/path/to/python2.7 這可能是一個路徑問題?

也可以指定路徑到您的Python庫,用你的版本要:

cmake -DPYTHON_LIBRARIES=/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib . 
+0

請注意,至少對於Ubuntu 16上的cmake 2.8。04,你需要設置-DPYTHON_LIBRARY而不是-DPYTHON_LIBRARIES – phiresky 2017-01-24 03:40:57

16

我也有類似的問題,並使用Paul's answer作爲提示解決它。我需要使用python2.7編譯一個較舊的庫,但cmake不斷提取我的python3.2庫(和可執行文件)。

首先,我用默認選項運行cmake,然後編輯它生成的CMakeCache.txt文件。我這樣做主要是因爲我不知道正確的-D...咒語導致cmake獲得python庫和包括路徑,等等在第一位。

在我CmakeCache.txt,我發現這樣的

  • 路徑行程序

    PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python 
    
  • 一個目錄路徑

    PYTHON_INCLUDE_DIR:PATH=/usr/include/python3.2 
    
  • 路徑庫

    PYTHON_LIBRARY:FILEPATH=/usr/lib/libpython3.2.so 
    

,取而代之的python3.2每一次出現python2.7。我還必須將PYTHON_EXECUTABLE重命名爲使用python2.7,因爲python是我係統上的python3.2的符號鏈接。

然後我reran cmake。因爲它更喜歡它的緩存值來實際查找這些庫,所以這應該適用於所有情況。至少,它在我的。

+0

這是對我有用的。提供cmake環境變量不起作用。編輯CmakeCache文件的確如此。與反正更容易工作 – JohnAllen 2016-06-10 16:52:00

19

您可以嘗試以下任一取決於你需要什麼:

find_package(PythonInterp 2.7 REQUIRED) 
find_package(PythonLibs 2.7 REQUIRED) 

參見:CMake docs

+0

很好地工作,也使用特拉維斯。 – 2016-03-18 14:04:43

+0

太容易了......我覺得很愚蠢。 – dividebyzero 2016-05-09 09:55:30

+3

https://cmake.org/cmake/help/latest/module/FindPythonInterp.html 建議換行 – sercxjo 2017-09-26 09:25:32

3

我使用Anaconda(蟒蛇2.7.8),以及蟒蛇2.7.6。

我試過-DPYTHON_EXECUTABLE:FILEPATH=$ANACONDA_HOME/bin,但發現1.4版(怪異:)。

我的解決辦法是將其更改爲PYTHON_EXECUTABLE:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TIFF=ON \ 
-DPYTHON_LIBRARY=$ANACONDA_HOME/lib/libpython2.7.so \ 
-DPYTHON_INCLUDE_DIR=$ANACONDA_HOME/include/python2.7/ \ 
-DPYTHON_EXECUTABLE=$ANACONDA_HOME/bin/python 
+0

對於anaconda特別是,這對我有用(並希望更容易概括):https://github.com/jkhoogland/FindPythonAnaconda(儘管我必須做兩個小小的更改 - 它們都在我的GitHub分叉if上游也不適合你) – 2017-09-13 01:04:03

相關問題