반응형
-fPIC 컴파일러 옵션을 추가하는 CMAKE의 관용적인 방법은 무엇입니까?
나는 이것을 하기 위한 적어도 세 가지 방법을 발견했고 나는 어떤 것이 관용적인 방법인지 궁금하다.이 작업은 거의 모든 정적 라이브러리에 대해 수행해야 합니다.CMake의 Makefile 생성기가 정적 라이브러리에 자동으로 추가되지 않는 것에 놀랐습니다.(내가 뭘 놓치고 있는 게 아니라면?)
target_compile_options(myLib PRIVATE -fPIC)
add_compile_options(-fPIC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic")
다른 변형도 있을 수 있다고 생각합니다.(질문이 발견되면 수정해주세요)
이 질문에 대한 답을 알고 있다면 CMake Lists를 변경하지 않고 이 플래그를 사용하여 서드파티 CMake 프로젝트를 컴파일할 수 있는 방법도 알고 계십니까?txt 파일?플래그가 없는 정적 도서관을 뛰어다녔어요정적 라이브러리를 동적 라이브러리로 컴파일할 때 문제가 발생합니다.
다음과 같은 이점을 얻을 수 있습니다.
relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
모든 표적에 대해 위치 독립 코드 속성을 설정할 수 있습니다.
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
또는 특정 라이브러리:
add_library(lib1 lib1.cpp)
set_property(TARGET lib1 PROPERTY POSITION_INDEPENDENT_CODE ON)
참조: CMAKE_POSITION_INTEND_CODE 빌드 시스템
또한 다음 명령줄 옵션을 에 전달할 수도 있습니다.cmake
(고객님의 cmake 프로젝트가 아니거나 프로젝트 파일을 수정할 수 없거나 변경할 수 없는 경우):
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
언급URL : https://stackoverflow.com/questions/38296756/what-is-the-idiomatic-way-in-cmake-to-add-the-fpic-compiler-option
반응형
'IT이야기' 카테고리의 다른 글
vue js 팝업에서 카운트다운 타이머가 작동하지 않음 (0) | 2022.06.25 |
---|---|
구조 패딩 및 패킹 (0) | 2022.06.22 |
vue js 2 테이블 정렬 (0) | 2022.06.22 |
.a 및 .so 파일이란? (0) | 2022.06.22 |
Meteor + Vue + Typescript 프로젝트에 ESLint 추가 (0) | 2022.06.22 |