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

호잇님의 프로필 이미지
호잇

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Protobuf

Cmake 에서 Generate 할때 CMakeLists.txt 파일이 없다는 Error는 어떻게 해결할 수 있나요??

작성

·

2K

·

수정됨

1

20230627_235135.png이렇게 뜨는데 해결방법을 모르겠습니다 ㅠㅠ
그리고
버전을 23버전으로 사용했는데
공부하는 시점에서 강의에 나오는 3.17로 진행하는건 문제가 없을까요??

답변 3

3

protobuf 22 이후 버전, 즉 최신버전 사용하시는 분들은 아래와 같이 해주시면 됩니다. 저는 27.2버전을 사용했습니다.

  1. CMAKE source code 위치변경 : protobuf-27.2/cmake 가 아닌 protobuf 폴더로 설정 해주시면 됩니다.

    image.png
  1. abseil-cpp, googletest 설치 아래 두 링크의 소스들을 해당 위치에 받으셔야 합니다.


    -abseil-cpp https://github.com/abseil/abseil-cpp => protobuf-27.2\third_party\abseil-cpp

    image.png


    googletest https://github.com/google/googletest => protobuf-27.2\third_party\googletest

    image.png
  2. 다시 CMake로 돌아와 "Generate"를 수행하시면 정상적으로 수행이 됩니다. 경고 메시지("A future Abseil release will default ABSL_PROPAGATE_CXX_STD...")가 뜨는데, 무시하셔도 되고 신경이 쓰이시면 ABSL_PROPAGATE_CXX_STD 옵션 체크해주시면 됩니다.

    image.png

에러 원인 - 이전 버전에는 protobuf와 종속관계에 있는 소스들이 protobuf git 소스에 함께 포함이 되어 있었는데, 22버전을 기점으로 해당 소스들을 제거하고 빈 폴더로만 남기고 사용자가 직접 dependency파일을 설치하도록 유도하는 것 같습니다. (관련 링크 : https://github.com/protocolbuffers/protobuf/issues/12016 , https://protobuf.dev/support/migration/)


질문으로부터 시간이 좀 흘렀지만.. 혹시나 최신버전으로 사용해보고자 하는 분들께 도움이 될까 하여 남깁니다.

아주아주 도움이 되었습니다. 감사합니다!

0

저도 같은 문제가 있네요 혹시 해결 하셨나요?

호잇님의 프로필 이미지
호잇
질문자

23이랑 22버전까지는 설정하는법이 다른건지 안되서
21버전까지는 강의랑 동일하게 가능하더라구요
그래서 21.12버전 으로 셋팅해서 쓰고있어요 지금은

감사합니다!!

0

안녕하세요, 인프런 AI 인턴이에요. CMake에서 Generate 할 때 CMakeLists.txt 파일이 없다는 오류가 발생하면, 일반적으로 프로젝트 루트 디렉토리에 CMakeLists.txt 파일이 없는 경우입니다. CMakeLists.txt 파일은 CMake 프로젝트의 루트 파일로, 프로젝트의 구성 및 생성 규칙을 정의합니다.

이 오류를 해결하기 위해서는 다음과 같이 진행할 수 있어요.
1. 프로젝트 루트 디렉토리에 CMakeLists.txt 파일을 생성하세요. 만약 이미 해당 파일이 있다면, 파일의 위치를 확인하세요. 파일이 다른 경로에 있다면 해당 경로로 이동하시면 되요.
2. CMakeLists.txt 파일 내부에 필요한 설정과 구성을 추가하세요. 프로젝트에 따라 필요한 내용이 다를 수 있으니, 본인의 프로젝트에 맞게 설정하세요.
3. CMake를 실행하여 Generate를 다시 시도하세요. 이제는 CMakeLists.txt 파일을 찾을 수 있으므로 오류가 발생하지 않을거에요.

또한, CMake 버전에 대해서 질문하셨는데요. CMake 버전은 일반적으로 상위 버전이 하위 버전과 호환되기 때문에 23 버전에서 3.17 버전의 CMake을 사용하셔도 큰 문제가 없을 것 같아요. 그러나 프로그램의 특정 기능을 사용하는 경우에는 버전 호환성을 고려해야 합니다. 이 경우, 해당 기능이 어떤 버전에서 도입되었는지 확인하시고 적절한 버전을 선택하시는 것이 좋습니다.

더 자세한 내용이 필요하시다면 CMake 프로젝트의 구성과 CMakeLists.txt 파일에 대해 더 알아보시는 것을 추천드립니다. 이 부분은 인프런의 ‘CMake를 활용한 C++ 개발’ 등의 강의를 통해 공부하실 수 있어요. 어려운 내용이 있다면 이러한 강의를 참고하시는 것도 도움이 될 것입니다. 이상입니다. 문제 해결에 도움이 되길 바랍니다!

호잇님의 프로필 이미지
호잇

작성한 질문수

질문하기