다른 라이브러리 (이 경우 ZLIB)에 종속 된 정적 라이브러리를 만들고 싶습니다. 이미 정적 빌드 (libz.a)가 있습니다.다른 정적 라이브러리를 참조하는 정적 라이브러리 만들기
...
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
set (BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set (CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) # to find the .a instead of the .so
...
find_package(ZLIB REQUIRED)
if (ZLIB_FOUND)
message(STATUS "ZLIB library: ${ZLIB_LIBRARIES}") # ZLIB library: /usr/lib64/libz.a
include_directories(${ZLIB_INCLUDE_DIRS})
set (EXT_LIBS ${EXT_LIBS} ${ZLIB_LIBRARIES})
endif()
...
add_library (libTest ${MCCORE_SOURCES_CC})
target_link_libraries(libTest ${EXT_LIBS}) #EXT_LIBS = /usr/lib64/libz.a
그러나, 빌드의 최종 단계는 정적 라이브러리를 생성하지만 /usr/lib64/libz.a
예에 대한 참조하지 않고있다 :
/usr/bin/ar cr libTest.a object1.o object2.o ... objectN.o
나는 것
나는 다음이 예상 :
/usr/bin/ar cr libTest.a object1.o object2.o ... objectN.o /usr/lib64/libz.a
최종 아카이브 생성이 target_link_libraries
으로 설정된 라이브러리를 고려하지 않는 것 같습니다.
아이디어가 있으십니까?
강제로 수행 할 수있는 작업은 무엇입니까? (비주얼 스튜디오와)
윈도우에서
그래서 내가 올바르게 이해했다면 기본적으로 두 개의 정적 라이브러리를 병합하고 싶습니까? 당신 도서관과 다른 사람? 왜 그게 필요하니? 이 라이브러리는 실행 파일에 링크됩니다. – Anonymous
저는 그것이 비정상적이며 라이브러리가 실행 파일에 완전히 포함될 것이라는 것을 알고 있지만 라이브러리의 정적 링크 버전을 제공해야하며 고객은 항상 옳다고 알고 있습니다. 권리? – yorjo
내일 아침에 답변을 게시해야합니다. 나는 비슷한 것을했습니다. – Anonymous