2013-01-09 3 views
4

나는 이미 cmake 아래에 큰 프로젝트를 가지고 있습니다. 나는 새로운 타겟을 만들기 위해 소스 파일과 의존 헤더 파일의 목록을 얻는 방법을 찾고있다. (예를 들어 Emacs를위한 etags에서). 혼자서 대답을 찾으려고했으나 쉽지 않은 것 같습니다.cmake 소스 목록 얻기

이상적인 soultion는 그런 일이 될 것입니다 :

add_executable(my_project <some list of source files and libraries defined in different directories>) 
add_custom_target(tags 
    COMMAND etags <list of all *.cpp and *.h files used in 'my_project' target> 
    DEPENDS <list of all *.cpp and *h used in 'my_project' target> 
    COMMENT "Creates source code tags for Emacs") 

당신은 어쩌면 '태그'대상 가져 오기를 만드는 방법을 알고 모든 일에 모든 cmake 구성 파일을 다시 할 필요없이 'my_project'대상에서 모든 종속성 디렉토리?

답변

4

명령이 get_target_property이고 속성이 SOURCES이고 결국 PUBLIC_HEADER 또는 PRIVATE_HEADER입니까?

get_target_property(MY_PROJECT_SOURCES my_project SOURCES) 
+0

감사합니다. 간단한 경우에 효과가있는 것 같습니다. 그러나'add_library (SOME_LIB)'를 가진 서브 디렉토리가 있고 실행 파일이'target_link_libraries (my_project SOME_LIB) '와 링크되어 있다면 그 의존성은 나타나지 않습니다. 또한 PUBLIC_/PRIVATE_ HEADER를 작동시키지 못합니다. * .cpp를 컴파일하는 동안 종속물 (예 : 헤더)을 가져 와서 변수에서 얻을 수 있습니까? –