Windows 환경에서 Visual Studio 컴파일러를 이용하여 FetchContent를 빌드하였습니다. fetch-content\build\Debug\fetch-content.exe가 나오는 것을 확인하였습니다. 이걸 그냥 실행시키면 poco 관련 dll이 없다고 나옵니다. fetch-content.sln를 Visual Studio로 열어서 디버깅 시작(F5)로 실행시켜도 마찬가지입니다. 이렇게 dll을 못찾는다고 나오지 않게 하려면 CMake로 어떻게 설정을 해야하는지 궁금합니다.
여러 줄 주석에서 === 개수는 어떤 식으로 활용되나요? add_compile_options는 전역라고 하셨는데 target_compile_options PUBLIC과 동작이 같나요? 타겟마다 다른 컴파일 옵션을 가질 수 있기 때문에 ABI에 영향을 주지 않는 것만 사용해야 합니다. ABI가 특정 옵션에 영향 받았는지는 어떻게 알 수 있을까요? PUBLIC이면 영향을 주는 옵션을 사용해도 안전한가요? 안전하다면 그래도 지양해야 하나요?
안녕하세요? 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 노출해서 사용할 수 있는 방법이 있을까요?
제가 맥에 대해서 거의 문외한 이어서. 발생 한 문제 원인을 잘 찾지 못하겠네요. hello-cmake 폴더에서 cmake -G "Xcode" -B build-xcode . 명령을 수행 하니 아래와 같은 오류가 발생 했습니다. -- The C compiler identification is unknown -- The CXX compiler identification is unknown CMake 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 폴더는 깃허브에서 다운 받은 것 입니다.
안녕하세요. 강사님 BUILD_SHARED_LIBS를 지정해줄 때 False는 정적, True는 동적으로 빌드된다는 것이 바로 앞의 커맨드 강의에서 add_library( foo STATIC src/foo.cpp ) 정적 add_library( foo SHARED src/foo.cpp ) 동적 과 같은 형태의 기능을 하는것인가요? 그리고 라이브러리 타겟을 정의할 때, 빌드 결과물을 지정해 줬다면 BUILD_SHARED_LIBS가 적용되지 않는 다는 말씀이 어떤 뜻인지 잘 이해가 안갑니다
수업진행중 cmake에 관해 궁금한 부분이 생겼는데요. CMakeLists.txt에서 Debug인지 Release인지 작성해준 것이 없는 것 같은데 어떻게 Build/Debug 밑에 실행파일이 생성되게 되나요? 그리고 32bit 프로그램인지 64bit 프로그램인지 작성하는 부분도 없는데 어떤 기준으로 만들어지게 되는건가요? vscode cmake 익스텐션을 사용하고 있는데 익스텐션에서 설정이 되어있는걸까요?
안녕하세요 1강 message를 듣는 중 궁금한게 있습니다. SEND_ERROR는 Configuration은 되지만, Build Generation이 안된다고 설명해주셨는데 그러면, Error during configuration가 아니라 Error during Generation이 아닌가요?
안녕하세요 삼각형님! 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.txt https://github.com/DogGuyMan/OpenGL-With-CMake/blob/main/cmake/Dependency.cmake
안녕하세요? 이번 강의에 외부 라이브러리를 사용하기 위해 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에 대해 궁금한 부분이 많았는데, 훌륭한 강의로 많은 도움을 받았습니다. 관련하여 한가지 궁금한 부분이 있어서 질문을 드립니다. 현재 개발 환경에서 컨테이너 기반으로 CMake 빌드 자동화를 구현해 보려 합니다. 그런데, FetchContent 에서 외부 소스를 다운로드 받고 컴파일하는 부분이 매번 동일하게 수행됩니다. 이 부분을 캐시 처리하고 싶은데요, CMake 설정은 어떻게 가능한지 궁금합니다.
강의 15:17 부근 target_include_directories 커맨드 설며에서, 'foo 타겟에 의존성을 가지고 있는 다른 타겟들은 bar 타겟의 인클루드 디렉토리에 있는 헤더 파일들을 사용할 수 있다' 라고 말씀해주셨습니다. 여기서 foo 가 아니라 bar 타겟 아닌가요? 커맨드에도 foo 타겟 이름을 보이지 않는데 어째서 foo 타겟에 의존성을 가지고 있는 다른 타겟들이 나온건지 질문드립니다.