해결된 질문
작성
·
59
답변 2
0
안녕하세요?
BUILD_SHARED_LIBS
을 사용하면 add_library
시 라이브러리 타입을 지정하지 않은 타겟에 일괄적으로 적용되게 됩니다.
add_library( foo STATIC src/foo.cpp )
처럼 라이브러리 타입을 정적으로 지정한 경우에는 BUILD_SHARED_LIBS
을 TRUE
로 설정하더라도 동적 라이브러리로 빌드가 되지 않는 것을 의미합니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 윤지환님.
BUILD_SHARED_LIBS에 대한 질문을 주셨군요. 아래에서 기본 개념에 대해 간단히 설명드리고, 유사한 질문에 대한 답변 링크를 제공하겠습니다.
CMake에서 BUILD_SHARED_LIBS
는 라이브러리를 기본적으로 정적(STATIC
)으로 빌드할지 동적(SHARED
)으로 빌드할지를 결정하는 전역 옵션입니다. 이를 통해 라이브러리를 사용할 때 컴파일러가 어떻게 접근할지 결정할 수 있습니다.
BUILD_SHARED_LIBS=TRUE
: 모든 라이브러리를 동적 라이브러리로 빌드합니다.BUILD_SHARED_LIBS=FALSE
: 모든 라이브러리를 정적 라이브러리로 빌드합니다.이미 add_library
명령어에서 명시적으로 STATIC
이나 SHARED
를 지정한 경우, 해당 라이브러리 타겟은 BUILD_SHARED_LIBS
변수의 영향을 받지 않습니다. 이는 add_library(foo STATIC src/foo.cpp)
에서 보실 수 있듯이, 명시적으로 정적 라이브러리를 생성하도록 지정했기 때문입니다.
반대로, add_library(foo src/foo.cpp)
와 같이 라이브러리 형태를 지정하지 않는 경우에는 BUILD_SHARED_LIBS
설정에 따라 정적 또는 동적 라이브러리로 생성됩니다.
위의 링크에서는 라이브러리 빌드 옵션에 대한 자세한 설명과 함께 BUILD_SHARED_LIBS
가 어떻게 적용되는지에 대한 답변을 확인하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.