2016-08-15 19 views
0

私はCMakeを学んでいます。CMake、どのようにデバッグモードとリリースモードで実行可能ファイルとダイナミックライブラリをリンクできますか?

私のプロジェクトは、実行可能ファイルと共有ライブラリで構成されています。共有ライブラリはサードパーティのプロジェクトで使用できます。実行可能ファイルと共有ライブラリがシステムにインストールされます。

私には2つの開発モードがあります:デバッグとリリースです。単純に、オプションを定義し、オプションの値に応じて、CMAKE_BUILD_TYPE変数に値を設定します。

次のように私は共有ライブラリと実行可能ファイルをリンクする:

~/my-project/build$ sudo make install 
~/my-project/build$ ldd -d /usr/local/bin/my_executable 

my_shared_library.so.0.1 => /path/my-project/output/lib/my_shared_library.so.0.1 (0x00007f1361adb000) 
          ------------------------ 
            local path 

それを:

ADD_EXECUTABLE(my_executable ${MY_EXECUTABLE_SOURCE_FILES}) 
TARGET_LINK_LIBRARIES(
    my_executable 
    ${MY_EXECUTABLE_DEPENDENCIES_LIBRARIES} 
    my_shared_library #target generated with ADD_LIBRARY 
) 

私の問題は、私はリリースモードでリンクし、私はLDDツールを実行したときにということです表示する必要があります:

my_shared_library.so.0.1 => /usr/local/lib/my_shared_library.so.0.1 (0x00007f1361adb000) 
          ----------- 
          install path 

どのようにc私はこの問題を解決する?

スタティックライブラリ(共有ライブラリの一部)を作成し、実行可能ファイルにリンクする必要がありますか?

乾杯

+0

ビルド・パスよりも、どこか別の場所からシステムパスで実行可能に 'ldd'を実行することがありますか? –

+0

サイドノート:デバッグモードとリリースモードを切り替えるための追加オプションをコーディングする必要はありません。ユーザーがCMakeの最初の呼び出し時に、または 'cmake --build 'をビルド中に' CMAKE_BUILD_TYPE'を直接指定します。 --target my_executable --config Debug | Shared' –

+0

@torbjörn私はCPackを使ってdebianパッケージを生成したいと思います。別のシステムにパッケージをインストールして実行可能ファイルを実行すると、共有ライブラリが見つからないために失敗します。実行可能ファイルを実行するには、** LD_LIBRARY_PATH **変数を変更する必要があります。 –

答えて

関連する問題