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 <alexand...@met.no <mailto:alexand...@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




--

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:
https://cmake.org/mailman/listinfo/cmake

Reply via email to