Instalar python-dev
corrigiu isso para mim:
sudo apt-get install python-dev
Entendi a dica aqui: link
Estou tentando criar grafite inria no meu ubuntu que está rodando em um simulador do VirtualBox, eu sigo as instruções, e instalo os pacotes python-dev
, mas quando eu executo o cmake, ainda recebo um erro:
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
(Required is at least version "3.2")
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-2.8/Modules/FindPythonLibs.cmake:208 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
src/packages/OGF/gel_python3/CMakeLists.txt:11 (FIND_PACKAGE)
Eu verifiquei o /usr/lib/
e localizei
tintin@tintin-VirtualBox:/usr/lib$ find . -name "libpython*"
./x86_64-linux-gnu/libpython3.4m.so.1.0
./x86_64-linux-gnu/libpython2.7.so.1.0
./x86_64-linux-gnu/libpython3.4m.a
./x86_64-linux-gnu/libpython2.7.a
./x86_64-linux-gnu/libpython3.4m.so
./x86_64-linux-gnu/libpython2.7.so
./x86_64-linux-gnu/libpython2.7.so.1
./x86_64-linux-gnu/libpython3.4m.so.1
então porque o cmake não consegue encontrar o PythonLibs, ou como devo lidar com isso?
O problema parece ser que o Ubuntu 14.04 instala o Python 3.4 por padrão e a versão do CMake do Ubuntu (2.8) só pesquisa o Python 3.3. Uma solução alternativa é adicionar set(Python_ADDITIONAL_VERSIONS 3.4)
antes da instrução find_package
. Observe que enviei um bug sobre esse problema.
Desde o CMake 3.0, o CMake pesquisa até o Python 3.4 , portanto, instalar essa versão manualmente também deve corrigir o problema .
Para mim, o problema foi um mau cache
rm CMakeCache.txt
Removemos o cache com a versão antiga do 2.7 e permitimos que ele encontrasse 3.2 no meu caso.
O cmake que eu usei é
find_package(PythonInterp 3.2 REQUIRED)
find_package(PythonLibs 3.2 REQUIRED)
message(STATUS "PYTHON_LIBRARIES = ${PYTHON_LIBRARIES}")
message(STATUS "PYTHON_EXECUTABLE = ${PYTHON_EXECUTABLE}")
message(STATUS "PYTHON_INCLUDE_DIRS = ${PYTHON_INCLUDE_DIRS}")
...
include_directories(${PYTHON_INCLUDE_DIRS})
Recentemente tive um problema semelhante com o Ubuntu 14.04 de 64 bits; aparentemente, o CMake não olha para as pastas de instalação dependentes da arquitetura por padrão:
CMake constructs a set of possible installation prefixes for the package. Under
each prefix several directories are searched for a configuration file. The tables
below show the directories searched.
[...]
<prefix>/(lib/<arch>|lib|share)/cmake/<name>*/ (U)
<prefix>/(lib/<arch>|lib|share)/<name>*/ (U)
<prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/ (U)
[...]
In all cases the <name> is treated as case-insensitive and corresponds to any of
the names specified (<package> or names given by NAMES). Paths with lib/<arch>
are enabled if CMAKE_LIBRARY_ARCHITECTURE is set.
(da documentação on-line do CMake 2.8.12 do comando find_package )
Uma solução consiste em configurar este CMAKE_LIBRARY_ARCHITECTURE no arquivo raiz do projeto CMakeLists.txt (no seu caso, seria editar src / packages / OGF / gel_python3 / CMakeLists.txt) antes de chamar find_package para PythonLibs; por exemplo:
cmake_minimum_required(VERSION 2.8)
project(project_name)
# Check the architecture and set CMAKE_LIBRARY_ARCHITECTURE accordingly
if(UNIX)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
endif()
endif()
find_package(PythonInterp 3.2 REQUIRED)
find_package(PythonLibs 3.2 REQUIRED)
# Rest of your file
Isso funcionou no meu caso.
Tags cmake