6

を使用してライブラリをインポートしようとすると

 add_library(libname SHARED IMPORTED)
    set_property(TARGET libname PROPERTY IMPORTED_LOCATION /<foldername>/<sub-foldername>/lib")

cmake は次のように叫びます。

/CMakeLists.txt:28 (target_link_libraries) の CMake 警告 (dev): このプロジェクトによってビルドされていないターゲット "libname" のリンク ライブラリを指定できません。

CMake はこれをサポートしていませんが、以前は誤って動作していたため、互換性のために許可されています。

ポリシー CMP0016 が設定されていません: 引数のみがターゲットでない場合、target_link_libraries() はエラーを報告します。ポリシーの詳細については、「cmake --help-policy CMP0016」を実行してください。cmake_policy コマンドを使用してポリシーを設定し、この警告を抑制します。この警告は、プロジェクト開発者向けです。-Wno-dev を使用して抑制します。

これが本当なら、ビルド ツリーのどこかにあるライブラリを別のプロジェクトに含めるための他の最良の方法は何ですか。ライブラリのセットアップがあり、別の場所にライブラリを使用する実行可能ファイルがあります。cmakeのドキュメントを読んで、これが最善の方法だと感じましたが、サポートされているばかりの壊れた部分のようです.

4

2 に答える 2

3

Poco C++ ライブラリをプロジェクトにインポートしようとしたときに、navderm と同じエラーが発生しましたlibPocoFoundation.so。別の解決策を試してみてもうまくいきませんでしたが、自分に合った解決策を見つけることができました。

cmake_minimum_required(VERSION 3.5)
project(MyProject)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_library(PocoLib SHARED IMPORTED GLOBAL)

# It's important to specify the full path to the library you want to import
set_target_properties(PocoLib PROPERTIES IMPORTED_LOCATION "/usr/local/lib/Poco_1.7.2/lib/libPocoFoundation.so")

# create my executable
set(EXEC_SOURCE_FILES main.cpp)
add_executable(MyProject ${EXEC_SOURCE_FILES})

target_link_libraries(MyProject PocoLib)
于 2016-06-08T22:12:44.257 に答える