2011-10-01 3 views
1

CMake에서 현재 헤더를 생성하는 간단한 Python 스크립트가 있지만 스크립트 자체를 업데이트하면 CMake는 스크립트를 다시 실행하지 않습니다. 내가 CMake에게이 일을시킬 수있는 방법이 있습니까?CMake 헤더 생성기 업데이트

답변

2

cmake가 실행될 때 코드 생성 스크립트를 직접 호출하는 것 같습니다. 가능한 솔루션이지만 cmake에 코드 생성기를 사용하는 것은 올바른 방법이 아닙니다.

add_custom_command(
    OUTPUT generated.h 
    COMMAND ${PYTHON_EXECUTABLE} generator.py 
    DEPENDS generator.py 
    ) 

을 그리고 당신은 간단한 add_library/add_executable 명령에 전달 된 소스 파일의 목록에 헤더를 넣을 수 있습니다 다음 :

나는 당신이 당신의 사건에 대한 add_custom_command을 사용하는 것이 좋습니다. cmake는 자동으로 모든 의존성을 추적하고 스크립트를 호출합니다.

기간 DEPENDS generator.py은 스크립트가 변경되면 헤더를 다시 생성해야한다고 cmake에 알립니다.

generated.h은 빌드시 (make을 실행하거나 IDE에서 빌드 명령을 실행할 때)에만 생성됩니다. 반대로 cmake 시간에 스크립트를 실행하는 경우 (execute_process 명령 사용) cmake를 다시 실행하여 파일을 재생성해야합니다. 가능하지만 비표준 종속성을 도입하기 위해 몇 가지 트릭을 사용해야합니다.