Steinar Lima
Steinar Lima

Reputation: 7821

Compiling error: "cannot find -lQtCore4"

Yesterday I downloaded the Qt4 Opensource library for linux. After running

./configure
./make
./make install

And inserting this into my .bashrc-file:

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

After this, I ran cmake in order to produce a Makefile for me. 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)

This CMakeLists.txt works perfectly well on Windows, but when I try to compile the output on my installation of Ubuntu, this error occurs:

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

Anyone who could point me to my problem here?

Upvotes: 1

Views: 489

Answers (1)

Sebastian Mach
Sebastian Mach

Reputation: 39089

In the unix[like] world, the slash is the path seperator, not the backslash.

\usr\local\TrollTech\Qt-4.7.3\bin evaluates to usrlocalTrollTechQt-4.7.3bin.

edit: Also, your CMakeLists.txt seems a bit foul. Have a look at http://qtnode.net/wiki/Qt4_with_cmake . Instead of

target_link_libraries(VTKToVTFx QtCore4)

use something like (source is the linked site):


  • To add support for Qt4 libraries like network or qttest, you need to add both the include files and corresponding libraries. For example, to add support for the network and qttest libraries, you can use:
INCLUDE_DIRECTORIES(
   ${QT_INCLUDE_DIR}
   ${QT_QTNETWORK_INCLUDE_DIR}
   ${QT_QTTEST_INCLUDE_DIR}
)

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

Even within the 4.x line of releases, libraries have been renamed and will be renamed. Fortunately there is no need for hardcodery :)

Upvotes: 3

Related Questions