ソフトウェア開発シナリオでは、大規模なプロジェクトの依存関係として機能する複数の静的ライブラリがあることが一般的です。配布を合理化し、依存関係管理の複雑さを軽減するには、これらのライブラリを単一の静的ライブラリに結合することが望ましい場合があります。 CMake は、この目標を達成するためにいくつかのアプローチを提供しています。
1 つのアプローチは、target_link_libraries コマンドを活用することです。ただし、このコマンドは指定されたライブラリをリンク依存関係として追加するだけであり、それらを単一のライブラリに結合するわけではないことに注意することが重要です。
よりシームレスなソリューションとしては、カスタム ターゲットを ar とともに使用することを検討してください。指示。このアプローチを示すサンプル CMake スクリプトを次に示します。
cmake_minimum_required(VERSION 2.8.7) add_library(b b.cpp b.h) add_library(a a.cpp a.h) add_executable(main main.cpp) set(C_LIB ${CMAKE_BINARY_DIR}/libcombi.a) add_custom_target(combined COMMAND ar -x $<TARGET_FILE:a> COMMAND ar -x $<TARGET_FILE:b> COMMAND ar -qcs ${C_LIB} *.o WORKING_DIRECTORY ${CMAKE_BINARY_DIR} DEPENDS a b ) add_library(c STATIC IMPORTED GLOBAL) add_dependencies(c combined) set_target_properties(c PROPERTIES IMPORTED_LOCATION ${C_LIB} ) target_link_libraries(main c)
このスクリプトは、2 つの静的ライブラリ (a および b) と、結合されたライブラリ (c) に依存する実行可能ファイル (メイン) をビルドします。結合されたカスタム ターゲットは、ar コマンドを使用して個々のライブラリからオブジェクト ファイルを抽出し、それらを c.a.
に結合します。
add_custom_target(combined COMMAND libtool -static -o ${C_LIB} $<TARGET_FILE:a> $<TARGET_FILE:b> WORKING_DIRECTORY ${CMAKE_BINARY_DIR} DEPENDS a b )
以上がCMake を使用して複数の静的ライブラリを 1 つに結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。