静的ライブラリ(libz.a)を既に持っている別のライブラリ(この場合はZLIB)に依存する静的ライブラリを作成したいと思います。他の静的ライブラリを参照する静的ライブラリを作成してください
...
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
で設定されたライブラリは気にしないようです。
アイデア?
これを強制するにはどうすればよいですか? (Visual Studioに)は、Windowsの下で
私が正しく理解していれば、基本的に2つの静的ライブラリをマージしたいのですか?あなたの図書館やその他の?なぜそれが必要ですか?これらのライブラリは実行可能ファイルにリンクされます。 – Anonymous
私はライブラリが完全に実行可能ファイルに含まれていることは珍しいことですが、ライブラリの静的リンクバージョンを出荷するように要求されており、お客様は常に正しいことを知っています。右? – yorjo
明日の朝に答えるべきです。私は似たようなことをやった。 – Anonymous