강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của nemo
nemo

câu hỏi đã được viết

Tam giác đang hoạt động! CMake cho người mới bắt đầu

Lệnh CMake

질문

Đã giải quyết

Viết

·

37

·

Đã chỉnh sửa

0

  1. 여러 줄 주석에서 === 개수는 어떤 식으로 활용되나요?

  2. add_compile_options는 전역라고 하셨는데 target_compile_options PUBLIC과 동작이 같나요?

타겟마다 다른 컴파일 옵션을 가질 수 있기 때문에 ABI에 영향을 주지 않는 것만 사용해야 합니다.

  1. ABI가 특정 옵션에 영향 받았는지는 어떻게 알 수 있을까요?

     

  2. PUBLIC이면 영향을 주는 옵션을 사용해도 안전한가요? 안전하다면 그래도 지양해야 하나요?

 

 

c++cmakevcpkg

Câu trả lời 2

0

triangle님의 프로필 이미지
triangle
Người chia sẻ kiến thức

  1. 여러 줄 주석에서 === 개수는 어떤 식으로 활용되나요?
    === 개수는 별 상관이 없습니다. 제가 정확히는 기억이 안나는데 영역을 나누기 위해 사용했습니다.

  2. add_compile_options는 전역라고 하셨는데 target_compile_options PUBLIC과 동작이 같나요?
    아니요 다르게 동작합니다. add_compile_options는 모든 타겟에 적용이 되는것이고 target_compile_options는 해당 타겟에만 지정이 되는 것입니다. 그리고 PUBLIC을 사용하면 해당 타겟에 의존성을 가지고 있는 타겟들에 영향을 주게 됩니다.

  3. ABI가 특정 옵션에 영향 받았는지는 어떻게 알 수 있을까요?

     
    그건 컴파일러의 문서를 확인해봐야합니다.

  4. PUBLIC이면 영향을 주는 옵션을 사용해도 안전한가요? 안전하다면 그래도 지양해야 하나요?
    네 사용해도 괜찮습니다. PUBLIC으로 선언하면 해당 옵션이 이 타겟을 사용하고 있는 타겟들에 영향을 미치는 것만 염두하고 계시면 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. ㅇㅅㅇ님!

타겟마다 다른 컴파일 옵션을 사용하면 ABI(Application Binary Interface)에 영향을 줄 수 있는데, 이는 프로그램의 이식성과 재사용성을 저해할 수 있습니다. 아래는 질문하신 내용에 대한 답변입니다.

  1. ABI가 특정 옵션에 영향 받았는지 확인하는 방법:

ABI는 바이너리 파일의 구조나 함수 호출 규약 등에 영향을 미치는 요소를 의미합니다. 컴파일러의 최적화 옵션이나 컴파일러 버전, 데이터 형식의 크기 등의 변경은 ABI에 변화를 줄 수 있습니다. 특정 옵션이 ABI에 영향을 미치는지는 일반적으로 컴파일러 문서를 참조하거나, 해당 옵션을 활성화한 경우 바이너리의 ABI 호환성 테스트를 통해 확인할 수 있습니다.

또한, 라이브러리 간 호환성을 위해 동일한 컴파일러와 버전을 사용하는 것이 권장됩니다. 만약 확실하지 않은 경우, nm, objdump 같은 도구를 사용하여 심볼 정보나 기계어 코드를 분석하는 것도 방법입니다.

  1. PUBLIC 옵션 사용의 안전성:

PUBLIC으로 설정된 컴파일 옵션은 이 타겟을 의존하는 다른 모든 타겟에도 적용됩니다. 이는 지정한 옵션이 ABI에 안전하지 않다면, 이 옵션을 의존하는 다른 모든 타겟이 영향을 받을 수 있음을 의미합니다. 따라서 PUBLIC으로 설정된 옵션이 ABI에 영향을 미치지 않도록 선택하는 것이 중요합니다.

일반적으로 ABI에 민감한 프로젝트에서는 PRIVATE로 옵션을 제한하거나, 영향을 줄 수 있는 옵션의 사용을 최소화하는 것이 좋습니다. 이를 통해 다른 프로젝트와의 호환성 문제를 줄일 수 있습니다.

아래는 관련 내용을 다룬 유사한 질문 링크입니다:

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

Hình ảnh hồ sơ của nemo
nemo

câu hỏi đã được viết

Đặt câu hỏi