2011-09-29 3 views
1

저는 cmake에 대해 배우고 배우기가 매우 빠르다고 생각합니다. 그러나 문서화는 흠집이 나지 않습니다. 자습서는 도움이되지만 지금까지만 제공됩니다.cmake - 상위 레벨 디렉토리의 사용자 정의 라이브러리에 연결하십시오.

내가 갖고있는 것은 기존 프로젝트이고 cmake를 사용하여 변환하고 싶습니다.

은 프로젝트 구조는 현재 보이는 같은 :

OBSYS/ OBSYS/클라이언트/{클라이언트 파일} OBSYS/서버/{서버 파일} OBSYS/유틸/ OBSYS의/유틸/src에 포함

각 레벨에서 CMakeLists.txt 파일을 만들었습니다.

최상위 레벨은 다음과 같이 현재 같습니다

make_minimum_required (VERSION 2.6) 
project (osys) 
add_subdirectory (server) 
add_subdirectory (utils) 

내부 유틸 I이 포함 된 CMakeLists.txt :

include_directories ("${PROJECT_SOURCE_DIR}/utils/include") 
add_subdirectory (src) 

과 CMakeLists.txt 파일에 포함 된 디렉토리 됨 src 유틸 내부

:

add_library(utils myException.cpp) 

서버가 utils에 링크해야합니다. 그것은 CMakeLists.txt이 포함되어있다 :이 레이아웃

make_minimum_required (VERSION 2.6) 
project (server) 
include_directories ("../utils/include") 
add_executable(serv serv.cpp) 
add_subdirectory("../utils/src" utils) 
target_link_libraries(obbsd utils) 

아이디어는 내가 최고 수준의 Makefile을 통해 전체를 많이 만들 수 바라고있다. 또는 서버 또는 클라이언트로 이동하여 둘 중 하나를 빌드하십시오. 그것은 그런 식으로 작동하지 않습니다. 이를 위해 권장되는 방법은 무엇입니까?

답변

1

좋아, 이제 작동하게되었습니다.

문제는 내 add_executable 줄에 모든 소스 파일이 나열되지 않았기 때문입니다. 링크는 실제로 그것이있을 때 도서관을 찾지 못했다고 생각하게 만든 유틸리티와 관련이 있다고 불평하는 것처럼 보였습니다.

관련 문제