Hi all, The problem I’m compiling a project in which I have:
- python bindings for C++ - VTK When issuing a find_package(VTK) inside a FindMyLib.cmake I got this error: CMake Error at D:/Work/Miniconda/envs/sci20/Library/share/cmake-3.4/Modules/FindPythonLibs.cmake:180 (get_filename_component): get_filename_component unknown component D:/Work/Miniconda/envs/sci20/libs/python27.lib Call Stack (most recent call first): CMakeLists.txt:15 (find_package) CMake Error at D:/Work/Miniconda/envs/sci20/Library/share/cmake-3.4/Modules/FindPythonLibs.cmake:181 (get_filename_component): get_filename_component called with incorrect number of arguments Call Stack (most recent call first): CMakeLists.txt:15 (find_package) I pinpointed the problem to: find_package(PythonInterp) find_package(PythonLibs) find_package(PythonLibs) # This call crashes Minimum reproducible example # CMakeLists.txt cmake_minimum_required(VERSION 3.4.3) project(my_project LANGUAGES CXX) message("----------------------------------------------------------------------------") message("1st Find Python (${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE})") message("-------") find_package (PythonInterp REQUIRED) find_package (PythonLibs REQUIRED) message("----------------------------------------------------------------------------") message("2nd Find Python (${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE})") message("-------") find_package (PythonLibs REQUIRED) Gives the output: λ rm -rf * && cmake -G "Ninja" x:\etk\sci20 -- The CXX compiler identification is MSVC 16.0.40219.1 -- Check for working CXX compiler using: Ninja -- Check for working CXX compiler using: Ninja -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done ----------------------------------------------------------------------------1st Find Python (X:/etk/sci20/CMakeLists.txt:6) ------- -- Found PythonInterp: D:/Work/Miniconda/envs/sci20/python.exe (found version "2.7.11") -- Found PythonLibs: optimized;D:/Work/Miniconda/envs/sci20/libs/python27.lib;debug;D:/Work/Miniconda/envs/sci20/libs/python27_d.lib (found version "2.7.11") ----------------------------------------------------------------------------2nd Find Python (X:/etk/sci20/CMakeLists.txt:12) ------- CMake Error at D:/Work/Miniconda/envs/sci20/Library/share/cmake-3.4/Modules/FindPythonLibs.cmake:180 (get_filename_component): get_filename_component unknown component D:/Work/Miniconda/envs/sci20/libs/python27.lib Call Stack (most recent call first): CMakeLists.txt:15 (find_package) CMake Error at D:/Work/Miniconda/envs/sci20/Library/share/cmake-3.4/Modules/FindPythonLibs.cmake:181 (get_filename_component): get_filename_component called with incorrect number of arguments Call Stack (most recent call first): CMakeLists.txt:15 (find_package) -- Found PythonLibs: optimized;optimized;optimized;D:/Work/Miniconda/envs/sci20/libs/python27.lib;optimized;debug;optimized;D:/Work/Miniconda/envs/sci20/libs/python27_d.lib;debug;D:/Work/Miniconda/envs/sci20/libs/python27_d.lib (found version "2.7.11") -- Configuring incomplete, errors occurred! See also "X:/etk/sci20/build/ninja/CMakeFiles/CMakeOutput.log". My environment: - Windows 7 - CMake 3.4.3 and CMake 3.5 (both showed the problem) - Python 2.7 compiled in PYDEBUG <https://docs.python.org/devguide/setup.html#compiling-for-debugging> mode (python_d) Diagnosis and workaround The problem is that the PYTHON_LIBRARY variable at the 2nd call to find_package(PythonLibs) is filled with: optimized;D:/Work/Miniconda/envs/sci20/libs/python27.lib;debug;D:/Work/Miniconda/envs/sci20/libs/python27_d.lib Which makes PythonBindings.cmake confused about what to do. workaround Call unset(PYTHON_LIBRARY) before any call to find_package(PythonLibs).
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake