묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결삼각형의 실전! CMake 초급
install 추가 질문
안녕하세요?install 예제 코드를 약간 수정해서 응용해보고 싶습니다. 근데 이 내용을 챗봇들도 잘 몰라서 강사님께 문의드립니다. baz 타겟을 새로 만들고, foo는 baz타겟을 private으로 의존합니다. baz 타겟은 baz()를 제공하며 foo()와 동일하게 stdout 출력하는 코드입니다. #include <baz.h> foo() { cout << "I'm foo!" << endl; baz(); // "I'm baz!" } baz는 foo 내부에서만 사용됩니다. 그래서 demo에는 기존 코드처럼 foo 타겟의 헤더만 제공합니다. 제 의도는 I'm foo에 이어 I'm baz도 같이 출력됐으면 했는데, 항상 I'm baz만 출력됩니다. add_library(foo foo.cpp # baz.cpp )챗봇은 foo 타겟 만들 때 baz.cpp도 추가하라고 합니다. foo, baz 를 명시적으로 분리된 상태에서 CMakeLists.txt에서 작성하고, baz는 foo 내부에서만 사용되니 foo 타겟만 demo 노출해서 사용할 수 있는 방법이 있을까요?
-
미해결삼각형의 실전! CMake 초급
-G 명령으로 Xcode 생성 할때 오류가 발생합니다.
제가 맥에 대해서 거의 문외한 이어서. 발생 한 문제 원인을 잘 찾지 못하겠네요.hello-cmake 폴더에서 cmake -G "Xcode" -B build-xcode . 명령을 수행 하니 아래와 같은 오류가 발생 했습니다.-- The C compiler identification is unknown-- The CXX compiler identification is unknownCMake Error at CMakeLists.txt:5 (project): No CMAKE_C_COMPILER could be found.CMake Error at CMakeLists.txt:5 (project): No CMAKE_CXX_COMPILER could be found. "Unix makefiles" 는 정상적으로 만들어 졌습니다.Xcode 를 한번도 실행 한적이 없어서 발생 한 문제 인가 해서 최신 버전으로 업데이트 하고. hello world 프로젝트 만들어서 빌드 까지 해보았습니다. 이것과는 관련 없는것 같고요.hello-cmake 폴더는 깃허브에서 다운 받은 것 입니다.
-
해결됨삼각형의 실전! CMake 초급
Build_SHARED_LIBS 질문
안녕하세요. 강사님BUILD_SHARED_LIBS를 지정해줄 때 False는 정적, True는 동적으로 빌드된다는 것이 바로 앞의 커맨드 강의에서 add_library( foo STATIC src/foo.cpp ) 정적add_library( foo SHARED src/foo.cpp ) 동적과 같은 형태의 기능을 하는것인가요?그리고 라이브러리 타겟을 정의할 때, 빌드 결과물을 지정해 줬다면 BUILD_SHARED_LIBS가 적용되지 않는 다는 말씀이 어떤 뜻인지 잘 이해가 안갑니다
-
해결됨삼각형의 실전! CMake 초급
수업 진행 중에 궁금한 부분이 생겼습니다.
수업진행중 cmake에 관해 궁금한 부분이 생겼는데요. CMakeLists.txt에서 Debug인지 Release인지 작성해준 것이 없는 것 같은데 어떻게 Build/Debug 밑에 실행파일이 생성되게 되나요? 그리고 32bit 프로그램인지 64bit 프로그램인지 작성하는 부분도 없는데 어떤 기준으로 만들어지게 되는건가요? vscode cmake 익스텐션을 사용하고 있는데 익스텐션에서 설정이 되어있는걸까요?
-
해결됨readable_code::CMake - Fancy하게 C++ Project 만들기
강의자료는 어디서 받을 수 있을까요?
안녕하세요.기초문법에서 강의자료로 사용하고 계시는 readable_code-cpp-build_system_modular_project_with_camke 프로젝트 패키지는 어디서 받을 수 있을까요?git도 찾아보았지만 없어서 문의드립니다.
-
해결됨삼각형의 실전! CMake 초급
설치경로 지정이 잘 안돼요.
--install-prefix 를 특정 폴더를 지정하였는데도 실제 --target install 을 해보면, 자꾸 program files (x86) 에 가서 설치가 되는데 이건 왜그러는걸까요..? -- Install configuration: "Debug" -- Installing: C:/Program Files (x86)/installing/lib/foo.lib -- Installing: C:/Program Files (x86)/installing/include/foo.h -- Installing: C:/Program Files (x86)/installing/lib/cmake/installing/installing-config.cmake -- Installing: C:/Program Files (x86)/installing/lib/cmake/installing/installing-config-debug.cmake
-
미해결readable_code::CMake - Fancy하게 C++ Project 만들기
SEND_ERROR는 Error during configuration가 아니라 Generation이 아닌가요?
안녕하세요 1강 message를 듣는 중 궁금한게 있습니다.SEND_ERROR는 Configuration은 되지만, Build Generation이 안된다고 설명해주셨는데 그러면, Error during configuration가 아니라Error during Generation이 아닌가요?
-
해결됨삼각형의 실전! CMake 초급
FetchContent로 가져온 외부 라이브러리를 사전에 빌드하는 방법이 있을까요?
안녕하세요 삼각형님! CMake를 활용해 OpenGL 환경을 구성하고 있고, FetchContent를 사용하여 외부 라이브러리를 의존하려고 하는 중입니다.여기서 문제는 glad 라이브러리는 CMake Configure-Generate 단계만으로는 라이브러리가 빌드되지 않아 사용할 수 없었습니다.. 여기서 CMake 프로젝트 절차가 매끄럽지 못한 점은 프로젝트 개발을 위해 어쩔수 없이 --build 를 수행 한 뒤에 개발이 가능하다는 점이 걸리게 되었습니다. Configure, Generate 단계에, 본 프로젝트 add_executable 한 target을 제외하고 의존하는 라이브러리를 사전에 빌드할 수 있을까요?CMakeLists.txt 첨부 드립니다!https://github.com/DogGuyMan/OpenGL-With-CMake/blob/main/CMakeLists.txthttps://github.com/DogGuyMan/OpenGL-With-CMake/blob/main/cmake/Dependency.cmake
-
해결됨삼각형의 실전! CMake 초급
ExternalProject_Add 관련 질문
안녕하세요? 이번 강의에 외부 라이브러리를 사용하기 위해 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 등도 사용하는 게 보입니다. 이 기술들은 사장된 기술들인가요? 강의 예제에서는 target_include_directories, target_link_directories, add_dependencies 를 사용하지 않는 이유가 궁금합니다. compile 후 linking을 위해서 이 명령어를 이용해 경로도 설정해줘야할 것 같은데요, 강의대로 따라하면 include directory, link directory를 굳이 설정할 필요 없이 link library로만으로도 빌드가 잘 되네요(?)
-
해결됨삼각형의 실전! CMake 초급
FetchContent를 캐시 처리할 수 있나요?
안녕하세요! CMake에 대해 궁금한 부분이 많았는데, 훌륭한 강의로 많은 도움을 받았습니다.관련하여 한가지 궁금한 부분이 있어서 질문을 드립니다.현재 개발 환경에서 컨테이너 기반으로 CMake 빌드 자동화를 구현해 보려 합니다.그런데, FetchContent 에서 외부 소스를 다운로드 받고 컴파일하는 부분이 매번 동일하게 수행됩니다.이 부분을 캐시 처리하고 싶은데요, CMake 설정은 어떻게 가능한지 궁금합니다.
-
해결됨삼각형의 실전! CMake 초급
CMake 커맨드 - target_include_directories 질문
강의 15:17 부근 target_include_directories 커맨드 설며에서, 'foo 타겟에 의존성을 가지고 있는 다른 타겟들은 bar 타겟의 인클루드 디렉토리에 있는 헤더 파일들을 사용할 수 있다' 라고 말씀해주셨습니다. 여기서 foo 가 아니라 bar 타겟 아닌가요?커맨드에도 foo 타겟 이름을 보이지 않는데 어째서 foo 타겟에 의존성을 가지고 있는 다른 타겟들이 나온건지 질문드립니다.
-
해결됨삼각형의 실전! CMake 초급
병렬 동작 지원 여부
CMake 에서 병렬 동작을 지원하나요?빌드나 테스트 등을 병렬로 처리할 수 있을 것 같아서요.
-
해결됨삼각형의 실전! CMake 초급
CMake 의 단점들
모던 CMake 로 넘어오면서 장점들을 소개해주셧는데, 단점들은 무엇이 있나요?
-
해결됨삼각형의 실전! CMake 초급
CMake 출시 연도가 영상에서 아마도 잘못 소개된 것 같습니다
안녕하세요.좋은 강의를 만들어주셔서 감사합니다! <CMake 소개> 영상 내용 중 CMake 출시 연도와 관련하여 잘못된 정보가 있는 것 같아 글을 남깁니다.<CMake 소개> 영상의 0:25 부근입니다.아래 슬라이드와 함께 나오는 부분입니다.위 슬라이드에는 "2013년 10월 처음 공개(v2.8.12)"라고 나오고,영상 0:25 부분에서는 삼각형님이 "CMake는 2013년에 처음 출시가 되었습니다"라고 설명하시는 음성이 나옵니다. 위 내용대로 2013년에 CMake가 처음 출시 되었다면 올해가 2024년이니 11년 정도의 역사를 가진 프로그램이라는 의미입니다. 슬라이드 상의 "20+년차 프로그램"이라는 내용과 맞지 않습니다. 인터넷 검색을 해보니 CMake가 처음 공개된 연도는 2000년으로 나옵니다.https://en.wikipedia.org/wiki/CMakehttps://cmake.org/history/ 아마 영상을 찍는 과정에서 무언가 착오가 있었던 것 같습니다. (위 슬라이드에서 v2.8.12를 언급한 것은 Modern이 아닌 CMake의 마지막 버전을 말씀하시고 싶었던 것이 아닌가 추측합니다. 이 추측이 맞을까요? v2.8.12를 위 슬라이드에서 언급하신 본래 이유는 무엇일까요?) 이 부분을 한번 검토해주시고 정확한 내용을 영상에 반영해주실 수 있을까 해서 글을 남깁니다.감사합니다!
-
해결됨삼각형의 실전! CMake 초급
4-2 installing 에서 질문드립니다
1.이번 강의에서는 --target install로 커맨드를 설정하셨는데요,cmd cmake --build . --target installCMakeLists.txt에 install 이라는 타겟이 없습니다. GNUInstallDirs 모듈 내부에 install이라는 타겟이 존재하는 건가요?2.installing을 사용하는 목적이 이해가 잘 안되서 질문드립니다. 예를 들어서..'cmake -B build .' -> 'cmake --build build'커맨드를 차례대로 실행하면, build 폴더 안에 여러가지 빌드와 관련된 파일들이 중구난방으로 쌓이게 되는 것 같은데요. installing을 이용해서 빌드 산출물들을 원하는 폴더 구조로 잘 정리하고 싶다는 목적으로 사용하나요?3.그러면 제가 배포한 소스코드들을 다른 누군가 사용할 때, 그 누군가는 CMakeLists.txt를 열어서 GNUInstallDirs 모듈을 사용한 흔적을 발견하는 경우, cmake --build build --target install 커맨드를 실행해야 하는 건가요?
-
해결됨삼각형의 실전! CMake 초급
CheckIncludeFileCXX 모듈 질문
안녕하세요? 강의 3-4 Fetch Content 부분에서 질문드립니다.check_include_file_cxx 모듈은 find_package() 커맨드와 동일한 역할을 하나요?# 필요한 패키지 찾기 find_package(fmt CONFIG REQUIRED)# C++ 파일이 있는지 검사 check_include_file_cxx("filesystem" CXX_FILESYSTEM_HAVE_HEADER) # 파일이 없는 경우 메세지 출력 if(NOT CXX_FILESYSTEM_HAVE_HEADER) message(STATUS "Oh no! can't use filesystem!") endif()
-
미해결
vscode <ncurses.h> include 오류
cmake를 이용해서 build해둔 상태인데 계속 #include <ncurses.h>에 오류가 뜹니다.MinGW 다운 받을 때 libncurses등등 같이 다운받았고 환경변수 경로도 다 지정을 해주었는데왜 못찾고 있는걸까요..?환경변수나 경로 설정이 잘못되어 있는 것일까요..?
-
미해결readable_code::CMake - Fancy하게 C++ Project 만들기
configurate_package.cmake 의 project() 와 find_package()
gtest/configurate_package.cmake 에 project(GTest...) 를 넣으면 GTest 가 설치되지도 않았는데 find_package() 에서 있는 걸로 처리되어서 install 이 안되고 있습니다. 혹시 제가 놓친 부분이 있을까요?
-
해결됨삼각형의 실전! CMake 초급
혹시 강의에 나오는 예제 코드를 받을 수 있는건가요?
섹션 2의 모던 CMake 쪽 강의를 듣고 있습니다.제가 놓친거 같은데 강의에서 실행하는 예제 코드 들은 어디서 다운 받을 수 있는건가요?아니면 제가 비슷하게 만들고 테스트를 해야 되는건가요?
-
미해결readable_code::CMake - Fancy하게 C++ Project 만들기
cmake 설치 및 예제 파일
안녕하세요. 강의를 보면서 따라 하고 싶은데 cmake 설치 및 버전, 파일 구조등에 대한 정보를 찾을 수 없어서 문의 드립니다.