인프런 커뮤니티 질문&답변

김종수님의 프로필 이미지
김종수

작성한 질문수

삼각형의 실전! CMake 초급

FetchContent 사용법

ExternalProject_Add 관련 질문

해결된 질문

작성

·

78

0

안녕하세요? 이번 강의에 외부 라이브러리를 사용하기 위해

1. vcpkg+find_package를 이용해 vcpkg로 설치한 라이브러리를 사용한다

2. fetchContent 를 이용해 vcpkg-find_package 없이 직접 package를 다운 받아서 사용한다.

를 배웠습니다. CMakeLists.txt에서 target_link_libraries를 이용하면 간단하게 라이브러리를 이용할 수 있구요.

 

github에서 외부 라이브러리 사용법 안내(readme)를 읽다보면 종종 ExternalProject_Add와 add_dependencies, target_include_directories, target_link_directories, target_link_library 등도 사용하는 게 보입니다.

 

  1. 이 기술들은 사장된 기술들인가요?

  2. 강의 예제에서는 target_include_directories, target_link_directories, add_dependencies 를 사용하지 않는 이유가 궁금합니다.
    compile 후 linking을 위해서 이 명령어를 이용해 경로도 설정해줘야할 것 같은데요, 강의대로 따라하면 include directory, link directory를 굳이 설정할 필요 없이 link library로만으로도 빌드가 잘 되네요(?)

답변 2

0

삼각형님의 프로필 이미지
삼각형
지식공유자

안녕하세요?

 

  • 이 기술들은 사장된 기술들인가요?

사장된 기술은 아니고 계속 사용하셔도 됩니다. 하지만 CMake 2.X에 나온 add_dependencies와 같은 함수들의 사용은 권장되지 않습니다. 모던 빌드 시스템을 기반으로 빌드 스크립트를 작성하셔야지 확장이 쉽고 유지보수가 가능합니다.

 

  • 강의 예제에서는 target_include_directories, target_link_directories, add_dependencies 를 사용하지 않는 이유가 궁금합니다.

target_xxx 함수들은 사용합니다. 하지만 글로벌하게 영향을 주는 add_dependencies는 사용하지 않습니다. 이유는 모던 빌드 시스템에 위배되기 때문이죠.

 

참고로 모던 빌드 시스템을 따르지 않고 기존의 방식으로 빌드 스크립트를 작성하셔도 됩니다.

스크립트를 매우 잘 작성하면 되지만 기존의 방식에서는 실수를 하기 매우 쉽습니다.

실수가 쌓이면 나중에는 유지보수하기 매우 힘든 상황이 오기 마련입니다.

모던 빌드 시스템은 이러한 문제들을 근본적으로 해결하기 때문에,

저는 강의에서 모든 빌드 시스템을 근간으로 만들어진 함수들을 사용하라고 권장하고 있습니다.

 

감사합니다.

0

삼각형님의 프로필 이미지
삼각형
지식공유자

안녕하세요?

 

  • 이 기술들은 사장된 기술들인가요?

사장된 기술은 아니고 계속 사용하셔도 됩니다. 하지만 CMake 2.X에 나온 add_dependencies와 같은 함수들의 사용은 권장되지 않습니다. 모던 빌드 시스템을 기반으로 빌드 스크립트를 작성하셔야지 확장이 쉽고 유지보수가 가능합니다.

 

  • 강의 예제에서는 target_include_directories, target_link_directories, add_dependencies 를 사용하지 않는 이유가 궁금합니다.

target_xxx 함수들은 사용합니다. 하지만 글로벌하게 영향을 주는 add_dependencies는 사용하지 않습니다. 이유는 모던 빌드 시스템에 위배되기 때문이죠.

 

참고로 모던 빌드 시스템을 따르지 않고 기존의 방식으로 빌드 스크립트를 작성하셔도 됩니다.

스크립트를 매우 잘 작성하면 되지만 기존의 방식에서는 실수를 하기 매우 쉽습니다.

실수가 쌓이면 나중에는 유지보수하기 매우 힘든 상황이 오기 마련입니다.

모던 빌드 시스템은 이러한 문제들을 근본적으로 해결하기 때문에,

저는 강의에서 모든 빌드 시스템을 근간으로 만들어진 함수들을 사용하라고 권장하고 있습니다.

 

감사합니다.

김종수님의 프로필 이미지
김종수

작성한 질문수

질문하기