1

QtCore4 パッケージをビルドできません。make 中に「SMOKE_QWT_LIBRARY」が設定されていないというエラーが表示されます。Ubuntu 12.04 で perlbrew Perl 5.14.2 を実行しています。CPAN だけでなく手動でモジュールをビルドし、システム Perl (同じく 5.14.2) と perl 5.16.1 にインストールしようとしました。エラー メッセージで参照されているディレクトリ内のファイルを調べました。ファイル CMakeLists.txt には「SMOKE_QWT_LIBRARY」への参照が含まれていますが、ディレクトリ参照やファイルを再構成する明確な方法はありません (そして、何を再構成すればよいかわかりません!)。

誰でもこれを手伝ってもらえますか?

これは make の出力です:
モジュール 'QtCore4' のインストールの実行 C/CB/CBUREL/Qt4-0.99.0.tar.bz2 の make の実行/CBREL/Qt4- 0.99.0.tar.bz2 OK

  CPAN.pm: Building C/CB/CBUREL/Qt4-0.99.0.tar.bz2

-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found Perl: /home/sillymoose/perl5/perlbrew/perls/perl-
5.14.2/bin/perl 
-- Found PerlLibs: /home/sillymoose/perl5/perlbrew/perls/perl-
5.14.2/lib/5.14.2/x86_64-linux/CORE/libperl.a (found version "5.14.2")
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt4: /usr/bin/qmake (found version "4.8.1")
-- Found QScintilla2: /usr/lib/libqscintilla2.so
-- Found QImageBlitz: /usr/include/qimageblitz 
-- Phonon Version: 4.6.0
-- Found Phonon: /usr/lib/x86_64-linux-gnu/libphonon.so
-- Found Phonon Includes: /usr/include/qt4/KDE;/usr/include/qt4
-- Found Qwt: /usr/lib/libqwt-qt4.so
-- Perl headers found: /home/sillymoose/perl5/perlbrew/perls/perl-
5.14.2/lib/5.14.2/x86_64-linux/CORE
-- Perl headers found: /home/sillymoose/perl5/perlbrew/perls/perl-
5.14.2/lib/5.14.2/x86_64-linux/CORE
-- Build PerlQt bindings: 
Phonon;QImageBlitz;QScintilla;Qt3Support;QtDBus;QtDeclarative;QtGui;QtHe
lp;QtNetwork;QtOpenGL;QtScript;QtSql;QtSvg;QtTest;QtUiTools;QtWebKit;QtX
ml;QtXmlPatterns;Qwt
-- Skip PerlQt bindings: QtMultimedia

------------------------------------------------------------------------
-----
-- The following external packages were located on your system.
-- This installation will have the extra features provided by these 
packages.
------------------------------------------------------------------------
-----
   * QScintilla2 - QScintilla2 libraries
   * QImageBlitz - QImageBlitz library
   * Phonon - Phonon multimedia framework
   * Qwt5 for Qt4 - Qwt5 libraries for Qt4

------------------------------------------------------------------------
-----
-- Congratulations! All external packages have been found.
------------------------------------------------------------------------
-----

CMake Error: The following variables are used in this project, but they 
are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the 
CMake files:
SMOKE_QWT_LIBRARY (ADVANCED)
    linked by target "perl_qwt" in directory 
/home/sillymoose/.cpan/build/Qt4-0.99.0-5Qxy7L/qwt/src

-- Configuring incomplete, errors occurred!
No 'Makefile' created  CBUREL/Qt4-0.99.0.tar.bz2
  /home/sillymoose/perl5/perlbrew/perls/perl-5.14.2/bin/perl Makefile.PL 
-- NOT OK

そして、これは ~/.cpan/build/Qt4-0.99.0-5Qxy7L/qwt/src/CMakeLists.txt の内容です

include_directories(
    ${CMAKE_SOURCE_DIR}/qtcore/src
    ${PERL_INCLUDE_PATH}
    ${QT_INCLUDES} )

# Run doxsubpp.pl to run xsubpp on Qwt.xs
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Qwt.c
                   COMMAND ${PERL_EXECUTABLE} ARGS ${CMAKE_SOURCE_DIR}/qtcore/src/doxsubpp.pl ${PERL_EXECUTABLE} Qwt.xs ${CMAKE_CURRENT_BINARY_DIR}/Qwt.c
                   DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Qwt.xs
                   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
# Make sure we build Qwt.c as c++ code
set_source_files_properties( ${CMAKE_CURRENT_BINARY_DIR}/Qwt.c 
    PROPERTIES LANGUAGE CXX
)

set( CMAKE_CXX_FLAGS ${PERL_CXX_FLAGS} )

set(qwt_LIBRARY_SRC
    ${CMAKE_CURRENT_BINARY_DIR}/Qwt.c
    qwthandlers.cpp
)

if(WIN32)
    set(libraryName PerlQwt)
else()
    set(libraryName Qwt)
endif(WIN32)

set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/blib/arch/auto/${libraryName})
add_library(perl_qwt SHARED ${qwt_LIBRARY_SRC})

target_link_libraries(perl_qwt
    ${SMOKE_QWT_LIBRARY}
    perlqtcore4)

set_target_properties(perl_qwt PROPERTIES OUTPUT_NAME ${libraryName})
set_target_properties(perl_qwt PROPERTIES PREFIX "")

install(TARGETS perl_qwt DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/${libraryName}/)
4

1 に答える 1

0

この問題は、Perlmonks のスレッドで解決されました。詳細はスレッドを参照してください。ただし、以下が含まれます。

  1. 正しいソース ライブラリのインストール。
  2. 正しい C フラグを使用して Perl を再コンパイルします。
  3. モジュールをソースからコンパイルします。

注意。これは Perl v5.10.1 でしか実行できませんでした。

于 2012-10-30T19:33:07.083 に答える