web-dev-qa-db-ja.com

CMakeを使用してプロジェクトにビルド済みの静的ライブラリを追加するにはどうすればよいですか?

Clion:プロジェクトにビルド済みの静的ライブラリを追加または(使用)する方法は?

10
ilw

プロジェクトをビルド済みの静的ライブラリにリンクする方法について質問している可能性があります。もしそうなら、あなたは target_link_libraries を呼び出すことによってこのようにすることができます。

myProjというプロジェクトとビルド済みのライブラリmyLib.libを想定すると、次のように実行できます。

target_link_libraries(myProj myLib)
14
herohuyongtao

CLionとCMakeはまったく初めてだったので、この作品を作るのは非常に困難でした。

私のシナリオでは、すべてのプロジェクトでコースライブラリを使用する必要があるクラスを受講していました。

libClassLibrary.aというライブラリがあると仮定して、プロジェクトルートのCMakeLists.txtで次の手順を実行します。

まず、ライブラリの場所を見つけます。

find_library(LIB_TO_INCLUDE ClassLibrary /path/to/your/library)

LIB_TO_INCLUDEには、ライブラリが見つかった場合のライブラリの場所が含まれます。ソリューションを他のシステムに移植できるようにしたい場合は、パスをハードコーディングすると問題が発生する可能性があることに注意してください。ライブラリが複数の場所に存在する可能性がある場合は、スペースで区切って検索パスを追加できます。典型的な例は、/usr/bin /usr/local/binなどの一般的なインストール場所を含めることです。

次に、ヘッダーファイル(該当する場合)がヘッダー検索パスに含まれていることを確認します。

find_path (LIB_INCLUDES ClassLibrary.h /path/to/header/files)

繰り返しますが、ヘッダーを複数の場所にロードできる場合は、複数の検索パスを含めます。複数のヘッダーファイルがある場合は、それらすべてをインクルードする必要があります。

ここで、include_directoriesコマンドを使用してディレクトリを含めます。

include_directories(${LIB_INCLUDES})

上記は、LIB_INCLUDESまたはあなたがそれを呼び出すことに決めたものに含まれるすべてのディレクトリを検索するようにビルドシステムに指示します。

最後に、実行可能ファイルを追加し、target_link_librariesコマンドを使用してlibClassLibrary.aをリンクします。

add_executable(MyExecutable main.cpp)
target_link_libraries(MyExecutable ${LIB_TO_INCLUDE})

それで全部です。プロジェクトオーガナイザーウィンドウの[外部ライブラリ]> [ヘッダー検索パス]の下に、ヘッダーファイルを含むディレクトリが表示されます。

PS-本Mastering CMake KenMartinとBillHoffmannによる貴重なリソースです。

2
ajw170

あなたの質問はCLionとは関係ありません、それは純粋なCMakeです。プロジェクトからCMakeLists.txtを変更し、add_libraryを使用します。 CMakeドキュメント が役立つかもしれません。

私は質問を誤解しました、target_link_libraryはおそらく質問への答えです。

0
usr1234567