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

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

작성한 질문수

삼각형의 실전! CMake 초급

CMake 설치

4-2 installing 에서 질문드립니다

해결된 질문

작성

·

84

·

수정됨

0

1.

이번 강의에서는 --target install로 커맨드를 설정하셨는데요,

cmd
cmake --build . --target install

CMakeLists.txt에 install 이라는 타겟이 없습니다. GNUInstallDirs 모듈 내부에 install이라는 타겟이 존재하는 건가요?


2.

installing을 사용하는 목적이 이해가 잘 안되서 질문드립니다. 예를 들어서..

'cmake -B build .' -> 'cmake --build build'

커맨드를 차례대로 실행하면, build 폴더 안에 여러가지 빌드와 관련된 파일들이 중구난방으로 쌓이게 되는 것 같은데요.

installing을 이용해서 빌드 산출물들을 원하는 폴더 구조로 잘 정리하고 싶다는 목적으로 사용하나요?

3.

그러면 제가 배포한 소스코드들을 다른 누군가 사용할 때,

그 누군가는 CMakeLists.txt를 열어서 GNUInstallDirs 모듈을 사용한 흔적을 발견하는 경우,

cmake --build build --target install 커맨드를 실행해야 하는 건가요?

답변 2

0

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

  1. 아니요. GNUInstallDirs과는 관련이 없고요. install 타겟은 CMake가 설치를 지원하기 때문에 기본적으로 제공되는 타겟입니다.

  2. install은 말 그대로 설치하고 싶을때 사용합니다. 예를 들어 내가 만든 어플리케이션이나 라이브러리를 다른 환경설정 없이 사용하고 싶을때 install 타겟을 사용해서 설치하곤 합니다. build 폴더 안에 산출물이 CMake에 의해서 생성되는거니 크게 신경쓰지 않으셔도 됩니다.

  3. GNUInstallDirs은 GNU에서 권장하는 폴더 구조를 사용해서 배포한다는 의미입니다. Windows와 같은 운영체제에서 GNU는 맞지 않죠. https://wiki.installgentoo.com/wiki/GNU/Linux_Directory_Structure를 살펴보시면 GNU 폴더 구조를 확인하실 수 있습니다. 즉 GNUInstallDirs를 사용하면 GNU 폴더 구조에 맞게 파일들이 복사된다고 생각하시면 됩니다.

-1

안녕하세요, 인프런 AI 인턴입니다.

김종수님의 궁금증에 대해 유사한 상황을 다룬 답변을 찾았습니다.


  1. --target install 관련 질문

CMake에서 install 타겟은 명시적으로 CMakeLists.txt 파일에 정의되어 있지 않아도 CMake가 내부적으로 제공하는 명령어 중 하나입니다. install() 명령을 CMakeLists.txt에 추가함으로써 이 타겟을 활용할 수 있으며, 이는 특정 파일이나 타겟을 최종 설치 경로에 복사하기 위해 사용됩니다. CMake 심화 - CMake 설치 실습 관련 문제에서 비슷한 문의가 있었으며, 설치 과정 중 문제가 발생했을 때 유용한 정보를 담고 있습니다. 강의 내용대로 명령어를 수행했음에도 설치가 되지 않는 경우에 해당 문제 해결 방법을 참고하시면 도움이 될 것 같습니다.

  1. install 사용 목적

install 명령의 주 목적 중 하나는 말씀하신 것처럼 최종 빌드 산출물을 잘 정리하여 배포하기 위한 것입니다. 이를 통해 필요한 파일들만을 특정 위치에 설치하고, 사용자 또는 다른 프로젝트에서 이 산출물들을 더 쉽게 찾고 사용할 수 있도록 돕습니다. 빌드 프로세스 중 생성되는 다양한 파일들을 구조화하여 관리할 수 있어, 크고 복잡한 프로젝트에서 특히 유용합니다.

  1. 이용자가 CMakeLists.txt를 통해 GNUInstallDirs 사용을 인지한다면?

만약 누군가가 제공된 소스 코드를 사용하고자 할 때 CMakeLists.txt를 확인하여 GNUInstallDirs 모듈을 사용한 흔적을 발견했다면, 그 사용자는 cmake --build . --target install 명령을 실행함으로써 필요한 파일들을 자신의 시스템에 올바른 위치에 설치할 수 있습니다. 이 과정은 라이브러리나 실행 파일을 시스템에 잘 통합하여 사용하기 위해 중요한 단계입니다.


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

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

작성한 질문수

질문하기