inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Protobuf

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

2644

호잇

작성한 질문수 12

1

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

네트워크 MMORPG windows-server

답변 3

8

서민우

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

효선

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

0

신용정

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

1

호잇

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

0

신용정

감사합니다!!

0

인프런 AI 인턴

안녕하세요, 인프런 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++ 개발’ 등의 강의를 통해 공부하실 수 있어요. 어려운 내용이 있다면 이러한 강의를 참고하시는 것도 도움이 될 것입니다. 이상입니다. 문제 해결에 도움이 되길 바랍니다!

writeLock을 잡을때 꼭 empty 상태여야하는 이유?

0

34

2

Memory Pool에서 오버플로우 질문입니다.

0

73

2

포토폴리오 및 진로 관련하여 고민입니다.

0

127

1

포토폴리오 관련 고민입니다.

0

66

1

실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.

0

86

2

성능 테스트 결과

0

105

2

게임 서버 Stateful, Stateless 진로 고민

0

130

1

WaitOnAddress와 Sleep의 차이 질문

0

84

1

궁금한거 있습니다.

0

84

2

JobTimer 구동 스레드

0

108

2

TryPop() 동작 관련 질문

0

81

1

로드맵 C#서버 C++서버 방향성 질문

0

151

2

스레드 id를 출력할떄 메인스레드 id도 출력되나요?

0

73

1

생명주기를 위한 의도적 복사

0

88

2

락프리의 실무에서 사용 질문

0

144

2

32bit threadID와 16비트 상위 WriteFlag에 대해

0

103

2

mutex와 sleep 차이점

0

119

1

실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다

0

158

2

Stomp Allocator의 Release함수에 대한 질문입니다.

0

97

1

공부법 관련해서

0

184

2

MakeShared 함수 관련

0

114

1

지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.

0

145

2

운영체제관련 질문입니다

0

132

1

send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.

0

120

2