Program Club

CMakeLists.txt에서 LDFLAGS를 설정하는 방법은 무엇입니까?

proclub 2020. 12. 1. 19:58
반응형

CMakeLists.txt에서 LDFLAGS를 설정하는 방법은 무엇입니까?


CMAKE_C_FLAGS에 의해 CMake에서 CFLAGS를 설정했습니다. LDFLAGS를 설정하는 것과 비슷한가요?


원하는 내용에 따라 다릅니다.

A) 연결할 라이브러리를 지정하려면 find_library사용 하여 libs를 찾은 다음 link_directoriestarget_link_libraries사용할 수 있습니다.

물론, 올바른 위치에 add_library (YourLib IMPORTED) 와 플랫폼 / 빌드 특정 사전 및 접미사를 사용 하여 "가져온"라이브러리를 멋지게 추가 하는 좋은 find_package 스크립트 를 작성하는 것은 종종 노력할 가치가 있습니다. 그런 다음 단순히 'YourLib'를 참조하고 target_link_libraries를 사용할 수 있습니다.

B) MinGW-GCC를 사용하여 특정 링커 플래그 (예 : '-mthreads'또는 '-Wl,-export-all-symbols')를 지정하려면 CMAKE_EXE_LINKER_FLAGS 를 사용할 수 있습니다 . 모듈, 공유 또는 정적 라이브러리에 대해 비슷하지만 문서화되지 않은 두 개의 플래그도 있습니다.

CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

보다:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

target_link_libraries 에서 링커 플래그를 지정할 수 있습니다 .


들어 모든 링크에 플래그를 추가하려면을 -fsanitize=address사용하지 않는 것이 좋습니다 CMAKE_*_LINKER_FLAGS. 모든 것이 설정되어 있어도 OSX에서 프레임 워크를 연결할 때 플래그를 사용하지 않으며 다른 상황에서도 사용할 수 있습니다. 대신 다음을 사용하십시오 link_libraries().

add_compile_options("-fsanitize=address")
link_libraries("-fsanitize=address")

이것은 모든 것을 위해 작동합니다.


라이브러리에 대한 링크는 Andre의 답변을 참조하십시오 .

링커 플래그의 경우-다음 4 개의 CMake 변수 :

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

ucmucm_add_linker_flags 매크로를 사용하여 다른 구성 (디버그, 릴리스 ...)에 대해 쉽게 조작 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/6077414/how-to-set-the-ldflags-in-cmakelists-txt

반응형