4

私は自分でOgre3Dhttp ://ogre3d.orgバイナリをビルドしましたが、Qtでプロジェクトにリンクしたいと思います(ビルドツールとしてCMakeを使用しています)。これは私のCMakeLists.txtファイルです:

project(ogre_face_test)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})

include_directories( "/home/XXX/programming/SDKs/OGRE_1.8.1_BUILD/include" "." )

link_directories("/home/XXX/programming/SDKs/OGRE_1.8.1_BUILD/lib")
target_link_libraries( ogre_face_test "OgreMain" )

.../BUILD/libディレクトリには、:などのファイルがありlibOgreMain.soますlibOgreMain.so.1.8.1

Qt Creatorでのリンクでこのエラーが発生します:

/usr/bin/cmake -H/home/XXX/programming/c++/ogre_face_sample/ogre_face_test -B/home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build/CMakeFiles /home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory `/home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build'
make -f CMakeFiles/ogre_face_test.dir/build.make CMakeFiles/ogre_face_test.dir/depend
make[2]: Entering directory `/home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build'
cd /home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/XXX/programming/c++/ogre_face_sample/ogre_face_test /home/XXX/programming/c++/ogre_face_sample/ogre_face_test /home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build /home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build /home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build/CMakeFiles/ogre_face_test.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build'
make -f CMakeFiles/ogre_face_test.dir/build.make CMakeFiles/ogre_face_test.dir/build
make[2]: Entering directory `/home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build'
Linking CXX executable ogre_face_test
/usr/bin/cmake -E cmake_link_script CMakeFiles/ogre_face_test.dir/link.txt --verbose=1
/usr/bin/c++       CMakeFiles/ogre_face_test.dir/main.cpp.o CMakeFiles/ogre_face_test.dir/FacialAnimation.cpp.o  -o ogre_face_test -rdynamic -lOgreMain 
/usr/bin/ld: cannot find -lOgreMain
collect2: error: ld returned 1 exit status
make[2]: *** [ogre_face_test] Error 1
make[2]: Leaving directory `/home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build'
make[1]: *** [CMakeFiles/ogre_face_test.dir/all] Error 2
make[1]: Leaving directory `/home/XXX/programming/c++/ogre_face_sample/ogre_face_test-build'
make: *** [all] Error 2

編集

一方、このファイルqmakeの代わりに使用する場合:CMake

TARGET = qt_test_1
TEMPLATE = app

SOURCES += main.cpp\
        FacialAnimation.cpp

HEADERS  += FacialAnimation.h

INCLUDEPATH += /usr/include\
            /home/monkey/programming/SDKs/OGRE_1.8.1_BUILD/include
DEPENDPATH += /usr/include
LIBS += -L/home/monkey/programming/SDKs/OGRE_1.8.1_BUILD/lib -lOgreMain

それはうまくリンクします。

4

1 に答える 1

7

CMakeのドキュメントには次のように書かれています。

  • link_directories:リンカがライブラリを検索するディレクトリを指定します。

    link_directories(directory1 directory2 ...)
    

    リンカがライブラリを検索するパスを指定します。このコマンドは、呼び出された後に作成されたターゲットにのみ適用されます。歴史的な理由から、このコマンドに指定された相対パスは変更されずにリンカーに渡されます(現在のソースディレクトリに対して相対パスを解釈する多くのCMakeコマンドとは異なります)。

(私の強調)したがって、を呼び出す前にディレクトリを設定する必要がありますadd_executable

于 2012-10-10T12:25:40.650 に答える