3

私は小さなライブラリを書いています。共有ライブラリとしてビルドし、「MyLibraryConfig.cmake」ファイルを生成して、他のプロジェクトで使用してライブラリを見つけたいと思います。

私が抱えている唯一の問題は、Windows でのリンクに使用されるファイルの名前/パスを把握することです。mylibrary.dll と mylibrary.dll.a の 2 つのファイルが生成されます。

したがって、次のような MyLibraryConfig.cmake ファイルを生成したいと思います。

"セット (MYLIBRARY_LIBRARIES /何とか/何とか/mylibrary.dll.a)"

そのため、MYLIBRARY_LIBRARIES を他のプロジェクトの target_link_libraries と共に使用できます。

このリンク可能なファイルの名前を取得するにはどうすればよいですか? ソリューションがプラットフォームに依存しないものであればいいのですが (Linux では .so wile を、Windows では .dll.a を返します)。

前もって感謝します

4

1 に答える 1

2

ライブラリをインストールせずに他のプロジェクトで使用できるようにすることを計画している場合は、CMake コマンドが必要ですexport。例えば:

export(TARGETS MyLib FILE ${CMAKE_SOURCE_DIR}/MyLibraryConfig.cmake)

これにより、最上位の CMakeLists.txt と同じディレクトリに MyLibraryConfig.cmake ファイルが作成されinclude、他の CMake プロジェクトでそのまま使用できます。


ライブラリのインストールを計画している場合は、install(EXPORT ...)代わりに次のものを使用します。

install(TARGETS MyLib EXPORT MyLibraryConfig
            RUNTIME DESTINATION bin
            LIBRARY DESTINATION lib
            ARCHIVE DESTINATION lib/static)
install(EXPORT MyLibraryConfig DESTINATION cmake)

これにより、ファイル MyLibraryConfig.cmake が にインストールされ、他のプロジェクト<install path>/cmakeで使用できるようになります。include

于 2013-03-30T18:28:43.350 に答える