Usando CMake con setup.py

Para un proyecto construyo una biblioteca de C e implico enlaces de Python (a través de la introspección de GObject) con CMake. También quiero distribuir algunos módulos de ayuda de Python usando distutils. Soy capaz de construir e instalar el módulo con esteCMakeLists.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()

y lo siguientesetup.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'])

Desafortunadamente, el paso de compilación se ejecuta cada vez que ejecutomake. Supongo que el problema está relacionado con la salida del comando personalizado que es un directorio en lugar de un archivo. Ahora, ¿hay alguna manera de decirle a CMake que corra?python setup.py build sólo cuandosetup.py.in ¿O una de las fuentes ha cambiado?

Respuestas a la pregunta(1)

Su respuesta a la pregunta