묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결readable_code::CMake - Fancy하게 C++ Project 만들기
Type checking
set(DATA_LIST ${CMAKE_CURRENT_SOURCE_DIR}/directory0/file.txt ${CMAKE_CURRENT_SOURCE_DIR}/directory0/directory ${CMAKE_CURRENT_SOURCE_DIR}/directory0/symlink.txt file.txt directory0/directory directory0/symlink.txt ) foreach(DATA ${DATA_LIST}) if(IS_DIRECTORY ${DATA}) message(STATUS "${DATA} is a directory") endif() endforeach() 왜 directory0/directory 는 IS_DIRECTORY 에서 참으로 판단되지 않나요?
-
미해결readable_code::CMake - Fancy하게 C++ Project 만들기
MATCHES 에서 regex 사용
Control statement 26:45 에 "^[a-z]{3}.txt$" 가 아닌 "^[a-z]3\\.txt$"가 맞는 것 같습니다.
-
미해결삼각형의 실전! CMake 초급
CMake Error: Unknown argument --fresh
--fresh는 3.24에서 추가되었군요.sudo apt install cmake 했는데 3.22로 설치되기 때문에 강의 내용처럼 홈페이지에서 직접 다운받아야 했군요.공유를 위해 적어봅니다!
-
해결됨삼각형의 실전! CMake 초급
질문
여러 줄 주석에서 === 개수는 어떤 식으로 활용되나요?add_compile_options는 전역라고 하셨는데 target_compile_options PUBLIC과 동작이 같나요?타겟마다 다른 컴파일 옵션을 가질 수 있기 때문에 ABI에 영향을 주지 않는 것만 사용해야 합니다.ABI가 특정 옵션에 영향 받았는지는 어떻게 알 수 있을까요? PUBLIC이면 영향을 주는 옵션을 사용해도 안전한가요? 안전하다면 그래도 지양해야 하나요?
-
해결됨삼각형의 실전! CMake 초급
set(<variable> ON/OFF)와 option에 차이가 있을까요?
아니면 같은 동작을 하나요?
-
해결됨삼각형의 실전! CMake 초급
-와 _를 선택하는 규칙이 궁금합니다.
project(hello-cmake) add_executable(hello_cmake src/main.cpp)에서요 project와 add_executable에서 각각 다른 기호를 선택한 이유가 궁금합니다.
-
해결됨삼각형의 실전! CMake 초급
4강과 5강의 강의 순서가 바뀐 것 같습니다.
[04. CMake CLI 사용법]에서 갑자기 hello-cmake가 나타나서 실습을 못 따라가 당황했는데요. [05. Hello CMake]와 순서가 바뀐 것 같습니다.
-
해결됨삼각형의 실전! 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 로 넘어오면서 장점들을 소개해주셧는데, 단점들은 무엇이 있나요?