2013-04-10 2 views
0

cmake에서 get_filename_component을 사용하여 변수에 주어진 상대 경로의 절대 경로를 가져옵니다.cmake에서 get_filename_component의 참조 경로를 변경하는 방법은 무엇입니까?

그리고 out-of-tree/out-of-source-build를하고 싶습니다.

get_filename_component은 참조 경로로 CMAKE_SOURCE_DIR을 사용하고있는 것으로 보입니다.

변경하거나 해결 방법이 있습니까?

내가 시도한 한 가지 방법은 내 잠재적 상대 경로 앞에 ${CMAKE_BINARY_DIR} 접두사를 붙이는 것이지만 주어진 경로의 작동이 멈추는 것은 상대적이지 않습니다. 당신은 항상 할 수있는,

if(NOT IS_ABSOLUTE ${MyPath}) 
    set(MyAbsPath ${CMAKE_BINARY_DIR}/${MyPath}) 
endif() 

대상 파일이나 디렉토리가 CMake의 런타임에 존재하는 경우 :

답변

2

당신의 상대 경로가 항상 상대 CMAKE_BINARY_DIR에가, 당신은 아주 쉽게 if(IS_ABSOLUTE ...)를 사용하여이 문제를 처리 할 수 ​​있습니다 가정 가능한 NAMESPATHS을 전달하는 find_file 전화. 파일이 존재하고 발견되면 결과 변수는 파일의 전체 경로를 보유합니다.

ifif(EXISTS ...) 서명을 사용하여 지정된 파일의 존재 여부를 확인할 수 있습니다.

관련 문제