別のライブラリ(この場合は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
。
何か案は?
これを強制するにはどうすればよいですか?