내가 가진 :CMake 프로젝트 공유 의존성
- X에게 X와 Y
모두 자체 CMakeLists.txt가 있으며 독립적으로 구성 및 구축 할 수 있습니다.
그러나 실행 파일 (Z)에 대한 CMakeLists.txt를 작동시키지 못합니다. OWN_LIBS 프로젝트 Y 단지 "X"되고, 프로젝트 Z.에서 "XY"를 인으로
foreach(clib ${OWN_LIBS})
set(LIBS "${LIBS} ${clib}")
set(CLIB_DIR "${PROJECT_SOURCE_DIR}/../lib${clib}")
set(CLIB_BUILD_DIR "${CLIB_DIR}/build")
add_subdirectory("${CLIB_DIR}" "${CLIB_BUILD_DIR}")
include_directories("${CLIB_DIR}/incl")
link_directories("${CLIB_BUILD_DIR}")
endforeach(clib)
이
이 프로젝트 Y를 위해 작동하지만, 프로젝트 :
내 방법이있다 Z, 내가 얻을 :
CMake 오류에 ... (add_subdirectory) : 바이너리 디렉토리
.../libX/build
은 이미 소스 디렉토리를 작성하는 데 사용됩니다. 고유의 바이너리 디렉토리 이름을 지정 빌드 소스 디렉토리
.../libX
에 사용할 수 없습니다.
로컬 빌드 디렉토리를 만들려고했는데, 예를 들어. 이있을 것 libY/빌드/deps-libX/(Y에서 사용)을 구성하고 내장 된 라이브러리 X를 포함, Z는 모두 X이를 가지고와 Y 불행하게도, 다음에 내가 다 퉜다 :
add_library 같은 이름의 다른 대상이 이미 존재하므로 "X"대상을 만들 수 없습니다. 기존 대상은 소스 디렉토리 "libX"에서 작성된 공유 라이브러리입니다. 자세한 내용은 CMP0002 정책에 대한 설명서를 참조하십시오.
ExternalProject 사용은 옵션이 아닙니다.
결국 결국 http://stackoverflow.com/a/11217008/128240에 나와있는 솔루션을 사용하여 끝났습니다. – ShdNx
[CMake - 동일한 프로젝트의 응용 프로그램/라이브러리 간의 종속성 (헤더)] 가능한 복제본 (http://stackoverflow.com/questions/11216408/cmake-dependencies-headers-between-apps-libraries-in-same-project) – ShdNx