[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