[CMake] compiling for both python2 and python3
Juan E. Sanchez
juan.e.sanchez at gmail.com
Fri Jun 22 20:20:14 EDT 2018
I use the same source files to compile by setting
TARGET_INCLUDE_DIRECTORIES for two similar targets. The included
Python.h provides the PY_MAJOR_VERSION macro to know if you are
compiling for python 2 or 3.
https://github.com/devsim/devsim/blob/master/src/pythonapi/CMakeLists.txt
https://github.com/devsim/devsim/blob/master/src/pythonapi/PythonCommands.cc
I avoid using FIND_PACKAGE, and code my own PYTHON or PYTHON3 variables,
like:
PYTHON_INCLUDE
PYTHON3_INCLUDE
in a specific cmake file for my configuration:
https://github.com/devsim/devsim/blob/master/cmake/centos_6.cmake
Regards,
Juan Sanchez
On 6/22/18 2:15 PM, Isaiah Norton wrote:
>
>
> On Fri, Jun 22, 2018 at 4:36 AM Alexander Bürger <alexanderb at met.no
> <mailto:alexanderb at met.no>> wrote:
>
> Hi,
>
> I am trying to find a good way to compile a python module for a c++
> library using boost-python for both python2 and python3 in the same
> compilation. So far, The only solution I found for using
>
>
> The headers CMake needs to find are different depending on the selected
> version, because the CPython API changed between 2 and 3. The ABI is
> also not guaranteed to be stable within 3.x minor versions unless you
> set Py_LIMITED_API (see e.g.
> https://stackoverflow.com/questions/28830653/build-boost-with-multiple-python-versions).
>
>
> FIND_PACKAGE(PythonInterp REQUIRED)
> FIND_PACKAGE(PythonLibs REQUIRED)
> FIND_PACKAGE(Boost REQUIRED COMPONENTS python # or python3)
>
> with different python versions is to use one CMakeLists.txt per
> python version, each in a subdirectory, and with almost equal
> contents. I would appreciate suggestions for a better approach, with
> less duplication.
>
> Best regards,
>
> Alexander Bürger
> MET Norway
>
> --
>
> Powered by www.kitware.com <http://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:
> https://cmake.org/mailman/listinfo/cmake
>
>
>
More information about the CMake
mailing list