강의

멘토링

커뮤니티

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

pie님의 프로필 이미지
pie

작성한 질문수

삼각형의 실전! CMake 초급

FetchContent 사용법

실행 방법 질문

작성

·

19

0

Windows 환경에서 Visual Studio 컴파일러를 이용하여
FetchContent를 빌드하였습니다.


fetch-content\build\Debug\fetch-content.exe가 나오는 것을 확인하였습니다.


이걸 그냥 실행시키면 poco 관련 dll이 없다고 나옵니다.

fetch-content.sln를 Visual Studio로 열어서
디버깅 시작(F5)로 실행시켜도 마찬가지입니다.

 

이렇게 dll을 못찾는다고 나오지 않게 하려면 CMake로 어떻게 설정을 해야하는지 궁금합니다.

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. pie님을 위해 FetchContent와 관련된 문제에 대해 설명드리겠습니다.

FetchContent를 이용하여 프로젝트를 빌드한 후 DLL 관련 에러가 발생하는 것은 대부분 빌드 시에 필요한 DLL이 프로그램 실행 디렉터리에 없기 때문입니다. 이는 설정 문제보다는 실행 환경의 문제일 가능성이 크므로, 다음의 방법을 통해 해결할 수 있습니다:

  1. DLL 경로 설정: 프로젝트가 의존하는 DLL 파일을 실행 파일의 디렉터리로 복사하거나 시스템 경로에 추가해 줍니다. Windows에서는 PATH 환경 변수에 DLL이 존재하는 디렉터리를 추가하여 Visual Studio 빌드에서 실행 시 필요한 DLL을 찾을 수 있도록 할 수 있습니다.

  2. CMake 설정 수정: CMake를 사용할 때 설치 단계에서 필요한 DLL을 함께 복사하도록 설정할 수 있습니다. install() 함수나 add_custom_command() 등을 이용하여 빌드 직후에 해당 DLL을 적절한 경로로 복사할 수 있습니다. 예를 들어:

   add_custom_command(TARGET fetch-content 
                      POST_BUILD
                      COMMAND ${CMAKE_COMMAND} -E copy_if_different
                      "${CMAKE_BINARY_DIR}/path_to_dll/dllname.dll"
                      $<TARGET_FILE_DIR:fetch-content>)

이 코드는 빌드 후 필요한 DLL을 실행 파일 디렉터리로 복사하는 예제입니다.

  1. 빌드 환경 확인: 프로젝트 내 dependency configuration이 올바르게 설정되어 있는지 확실히 확인합니다. 특히, confgure 단계에서 각종 경로 및 라이브러리 설정이 제대로 이루어져야 합니다.

아래 링크를 참조하시면 유사한 문제에 대한 설명을 얻을 수 있습니다:

이 링크에서는 CMake와 FetchContent를 사용할 때 외부 라이브러리의 빌드 관련 메커니즘에 대해 더 많은 정보를 제공하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

pie님의 프로필 이미지
pie

작성한 질문수

질문하기