16

私は非常に単純ですCMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
FIND_PACKAGE(VTK REQUIRED)
PROJECT(test CXX)

それは本当に何もしません。パッケージVTKは。の下に正しくあります/usr/lib/vtk-5.8/VTKConfig.cmake。このファイルには、次のタイプのステートメントが多数含まれています

ADD_LIBRARY(foobar SHARED IMPORTED)

共有ライブラリlibfoobar.soを実行可能ファイルにリンクする必要があることを示します。

ただし、上記のスクリプトを使用してMakefileを作成すると、CMakeは次のように文句を言います。

CMake Warning (dev) at /usr/lib/vtk-5.8/VTKTargets.cmake:244 (ADD_LIBRARY):
  ADD_LIBRARY called with SHARED option but the target platform does not
  support dynamic linking.  Building a STATIC library instead.  This may lead
  to problems.
Call Stack (most recent call first):
  /usr/lib/vtk-5.8/VTKConfig.cmake:200 (INCLUDE)
  /usr/share/cmake-2.8/Modules/FindVTK.cmake:73 (FIND_PACKAGE)
  CMakeLists.txt:4 (FIND_PACKAGE)
This warning is for project developers.  Use -Wno-dev to suppress it

この警告は何を意味し、どのように対処されますか?

これはCMake2.8.9を搭載したLinuxシステムです。このエラーメッセージは、を含むすべてのパッケージに表示されますがADD_LIBRARY(foobar SHARED IMPORTED)、ここでは例としてVTK-5.8を使用しています。

4

2 に答える 2

43

PROJECTは、プラフォームに関するいくつかの重要な変数を設定します。

名前をPROJECTに設定する前に、FIND_*モジュールを呼び出さないでください。

于 2014-09-15T09:02:50.657 に答える
10

このエラーメッセージは、CMakeグローバルプロパティTARGET_SUPPORTS_SHARED_LIBSがfalseに設定されていて、共有ライブラリを使用している場合に発生します。Source/cmAddLibraryCommand.cxxCMakeソースの100行目を参照してください。

非常に基本的なシステム(組み込みOS)をクロスコンパイルしない限り、これは通常は発生しません。

これは最新バージョンのCMakeのバグであるか、CMakeが正しく構成されていない可能性があります。

于 2012-09-04T14:56:00.867 に答える