1. ホーム
  2. cmake

[解決済み] CMakeにソースディレクトリにある静的ライブラリをリンクするように指示するには?

2022-09-20 18:51:44

質問

私は Makefile を持つ小さなプロジェクトを持っており、CMake に変換しようとしています。この例の目的のために、プロジェクトにはソース ファイル (C++、ただし言語は特に関係ないと思います) と、私が他の場所からコピーした静的ライブラリ ファイルが含まれています。議論のために、ライブラリへのソース コードが利用できないと仮定します。私は .a ファイルと対応するヘッダーだけを持っています。

私のハンドメイドの Makefile には、このビルド ルールが含まれています。

main: main.o libbingitup.a
    g++ -o main main.o libbingitup.a

で、うまく動作します。CMakeにこれを再現するように指示するにはどうしたらよいでしょうか。もちろん、文字通りこの正確なmakefileではなく、同等のリンクコマンドを含む何かです。私は明白な、しかし素朴な方法を試みました、例えば

add_executable(main main.cpp libbingitup.a)

または

add_executable(main main.cpp)
target_link_libraries(main libbingitup.a)

と同様、様々なものを link_directories(.) または add_library(bingitup STATIC IMPORTED) などと書いていますが、今のところリンクに成功するものはありません。どうすればいいのでしょうか?


バージョンの詳細。Linux (Kubuntu 12.04) と GCC 4.6.3 上で CMake 2.8.7 を使用。

どのように解決するのですか?

CMakeはライブラリをリンクするためにフルパスを渡すことを好むので、libbingitup.aが以下の場所にあると仮定します。 ${CMAKE_SOURCE_DIR} にあると仮定すると、以下を実行すると成功するはずです。

add_executable(main main.cpp)
target_link_libraries(main ${CMAKE_SOURCE_DIR}/libbingitup.a)