Ошибка компиляции: "не удается найти -lQtCore4" - PullRequest
1 голос
/ 08 июля 2011

Вчера я скачал библиотеку Qt4 Opensource для linux .После запуска

./configure
./make
./make install

и вставки этого в мой .bashrc-файл:

PATH=/usr/local/TrollTech/Qt-4.7.3/bin:$PATH
export PATH

После этого я запустил cmake, чтобы создать для меня Makefile.CMakeLists.txt:

project(VTKToVTFx)

cmake_minimum_required(VERSION 2.6)

find_package(VTK REQUIRED)
find_package(Qt4 REQUIRED)

include(${VTK_USE_FILE})
include(${QT_USE_FILE})

SET(VTK_TO_VTFX_FORMS main.ui)
QT4_WRAP_UI(VTK_TO_VTFX_FORMS_UIC ${VTK_TO_VTFX_FORMS})

SET(MOC_HEADERS VTKToVTFx.h)
qt4_wrap_cpp(MOC_OUTFILES ${MOC_HEADERS})

SET(CPP_SOURCES VTKToVTFx.cpp
                VTKPatch.cpp
                VTKFile.cpp
                VTKData.cpp
                VTKDataHolder.cpp
                )

add_executable(VTKToVTFx ${CPP_SOURCES} ${VTK_TO_VTFX_FORMS_UIC} ${MOC_OUTFILES})

# Adds folders for Visual Studio solution explorer (and for Xcode explorer)
source_group( "Generated"         FILES ${MOC_FILES_CPP} ${VTK_TO_VTFX_FORMS_UIC} ${QRC_FILES_CPP} ${MOC_OUTFILES})

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})

target_link_libraries(VTKToVTFx vtkHybrid)
target_link_libraries(VTKToVTFx QtCore4)
target_link_libraries(VTKToVTFx QtGUI4)

Этот файл CMakeLists.txt прекрасно работает в Windows, но когда я пытаюсь скомпилировать вывод при установке Ubuntu, возникает эта ошибка:

/usr/bin/ld: cannot find -lQtCore4
/usr/bin/ld: cannot find -lQtGUI4

Кто-нибудь, кто мог бы указать мне на мою проблему здесь?

1 Ответ

3 голосов
/ 08 июля 2011

В мире Unix [like] косая черта - это разделитель пути, а не обратная косая черта.

\usr\local\TrollTech\Qt-4.7.3\bin оценивается как usrlocalTrollTechQt-4.7.3bin.

edit: Кроме того, ваш CMakeLists.txt кажется немного грязным.Посмотрите на http://qtnode.net/wiki/Qt4_with_cmake.Вместо

target_link_libraries(VTKToVTFx QtCore4)

используйте что-то вроде (источником является связанный сайт):


  • Чтобы добавить поддержку библиотек Qt4, таких как network или qttest, вам нужнодобавить как включаемые файлы и соответствующие библиотеки.Например, чтобы добавить поддержку сетевых и qttest библиотек, вы можете использовать:
INCLUDE_DIRECTORIES(
   ${QT_INCLUDE_DIR}
   ${QT_QTNETWORK_INCLUDE_DIR}
   ${QT_QTTEST_INCLUDE_DIR}
)

TARGET_LINK_LIBRARIES(
   ${QT_LIBRARIES}
   ${QT_QTNETWORK_LIBRARIES}
   ${QT_QTTEST_LIBRARIES}
)

Даже в линейке выпусков 4.x библиотеки были переименованы ибудет переименованК счастью, нет необходимости в hardcodery:)

...