2013-06-21 3 views
19

/A 폴더에있는 CMakeLists.txt에 foo 명령 호출이 있다고 가정 해보십시오.추가 CMakeLists.txt를 포함하는 방법

foo/B 폴더에있는 다른 CMakeLists.txt에 정의되어 있습니다.

foo으로 전화 하시려면 /A/CMakeLists.txt에서 /B/CMakeLists.txt을 어떻게 참조 할 수 있습니까?

나는 통해 /B/CMakeLists.txt에 검색 경로를 설정하려고 :

  • CMAKE_INCLUDE_PATH
  • CMAKE_MODULE_PATH
  • CMAKE_SOURCE_DIR

하지만 그들 중 누구도 일했다.

CMake 여전히 Unknown CMake command "foo".include 수행 할 수 있습니다

답변

26

는, 여기에 몇 가지 간단한 예제 complaines : B의 ​​A/CMakeLists.txt

function(foo) 
    message(STATUS "heya") 
endfunction() 

내용의

내용/CMakeLists.txt

cmake_minimum_required(VERSION 2.8) 
include(${CMAKE_CURRENT_SOURCE_DIR}/../A/CMakeLists.txt) 
foo() 

이제 다른 CMakeLists.txt도 해당 파일의 모든 것을 실행하므로 B/CMakeLists.txt에 대상이있는 경우이를 피할 수 있습니다.

코드를 수정할 수있는 경우 " 최상위 수준 "CMakeLists.txt 호출하기 전에 add_subdirectory 호출하십시오.

26

이 파일에 함수 정의 만 있으면 CMakeLists.txt가 아니라 some_adequate_name으로 지정해야합니다. cmake

include을 사용하여 이러한 함수 정의가 필요한 곳을 포함 할 수 있습니다.

관련 문제