Używając CMake z setup.py

Dla projektu buduję bibliotekę C i implict powiązania Pythona (poprzez introspekcję GObject) z CMake. Chcę także rozpowszechniać niektóre moduły pomocnicze Pythona przy użyciu distutils. Dzięki temu mogę zbudować i zainstalować modułCMakeLists.txt

find_program(PYTHON "python")

if (PYTHON)
    set(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in")
    set(SETUP_PY    "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
    set(DEPS        "${CMAKE_CURRENT_SOURCE_DIR}/module/__init__.py")
    set(OUTPUT      "${CMAKE_CURRENT_BINARY_DIR}/build")

    configure_file(${SETUP_PY_IN} ${SETUP_PY})

    add_custom_command(OUTPUT ${OUTPUT}
                       COMMAND ${PYTHON}
                       ARGS setup.py build
                       DEPENDS ${DEPS})

    add_custom_target(target ALL DEPENDS ${OUTPUT})

    install(CODE "execute_process(COMMAND ${PYTHON} ${SETUP_PY} install)")
endif()

i następującesetup.py.in:

from distutils.core import setup, Extension

if __name__ == '__main__':
    setup(name='foo',
          version='${PACKAGE_VERSION}',
          package_dir={ '': '${CMAKE_CURRENT_SOURCE_DIR}' },
          packages=['module'])

Niestety krok kompilacji jest wykonywany przy każdym uruchomieniumake. Myślę, że problem jest związany z wyjściem niestandardowego polecenia, które jest katalogiem, a nie plikiem. Czy jest jakiś sposób, aby powiedzieć, że CMake działapython setup.py build tylko kiedysetup.py.in lub zmieniło się jedno ze źródeł?

questionAnswers(1)

yourAnswerToTheQuestion