2011-02-07 3 views
4

나는 빌드 시스템으로 CMake을 사용하는 C++ 소프트웨어 프로젝트에서 일하고 있습니다. 이 소프트웨어는 Mac OS/X, Linux 및 Windows를 기반으로합니다.파일 변경시 CMake 기반 소프트웨어 프로젝트를 다시 컴파일하기위한 소프트웨어가 있습니까?

일반적인 해킹/컴파일/테스트주기를 개선하기 위해 CMake 프로젝트에서 고려한 모든 소스 파일을 인식하는 데몬과 유사한 소프트웨어가 있는지 궁금합니다. 소스 파일 중 하나가 수정 될 때마다, 디먼은이를 감지하고 영향받은 대상을 재 빌드합니다. 아이디어는 내 사이클의 '컴파일'단계가 더 빨라질 것입니다. 왜냐하면 친숙한 이웃 빌드 데몬이 이미 모든 파일을 다시 작성한 이후로 '아무 것도하지 말라'고 즉시 반환 할 수 있기 때문입니다.

누구든지 그렇게 할 수있는 기존 소프트웨어를 알고 있습니까? 그렇지 않다면 CMake에서 고려한 소스 파일 목록을 내 보내서 그 파일을 모니터하고 make (또는 선택한 생성기에 적합한 것이 무엇이든)을 다시 실행하는 약간의 데몬을 직접 작성할 수 있습니까? 최선의 경우, 종속성 트리를 가져 와서 모든 종속성을 반복적으로 검사하지 않고 필요한 대상을 업데이트 할 수도 있습니다.

답변

2

나는 많은 번거 로움없이 파일 변경을 성공적으로 모니터링하기 위해 JNotify을 사용했습니다.

언급 한 모든 운영 체제에서 작동하며 파일 변경 감지는 거의 즉시 발생합니다. 파일 생성, 삭제, 수정 등을 감지 할 수 있습니다.

좋은 코드 샘플은 here입니다.

class CMakeListener implements JNotifyListener { 
    public void fileModified(int wd, String rootPath, String name) { 
     // if a file is a cpp or hpp file, execute CMake 
    } 
} 

을하고 CMake 작업이 잘 자동화해야합니다

당신은 같은 것을 할 수 있습니다.

+0

감사합니다. 흥미 롭습니다. 그러나, 나는 처음부터 수정해야 할 파일을 찾아야 할 것입니다. CMake가이 목록을 인쇄 할 수있는 방법이 있습니까? –

+0

@Frerich : 귀하의 관심사가 아닙니다. CMake는 어떤 변화가 일어 났는지 탐지하고 적절하게 행동 할만큼 충분히 똑똑해야합니다. 변화가 일어날 때마다 그것을 호출하여 CMake가 휴식을 취하도록하는 것이 당신의 일입니다. – darioo

+0

죄송합니다. 오타를 만들었습니다. 제 질문은 다음과 같습니다. 어떻게 모니터 할 파일을 찾을 수 있습니까? JNotify? 나는 CMake가 '소스'로 간주하는 파일을 알고 싶습니다. –

관련 문제