cmake_minimum_required(VERSION 3.14) project(mwe LANGUAGES C CXX) # Define the primary library and executable and install in the usual way add_library(mwe SHARED library.cpp) target_include_directories(mwe PUBLIC $ ) add_executable(mwe.exe executable.cpp) target_link_libraries(mwe.exe mwe) include(GNUInstallDirs) install(TARGETS mwe mwe.exe RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) # Define the Python binding module find_package(PythonExtensions REQUIRED) execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "import pybind11; print(pybind11.get_cmake_dir())" OUTPUT_VARIABLE pybind11_DIR OUTPUT_STRIP_TRAILING_WHITESPACE ) find_package(pybind11 REQUIRED) add_library(_mwe MODULE mwe/_mwe.cpp) python_extension_module(_mwe) target_link_libraries(_mwe pybind11::module mwe) install(TARGETS _mwe DESTINATION ${PYTHON_RELATIVE_SITE_PACKAGES_DIR}/mwe)