Search code examples
linuxqtcmakeqt5qtquick2

CMAKE_PREFIX_PATH doesn't help CMake in finding Qt5


From here: https://stackoverflow.com/a/28327499/462608

I tried this:

cmake_minimum_required(VERSION 2.8.12)

project(qtquick_hello_cmake)

set(CMAKE_PREFIX_PATH "/opt/Qt5.9.1/5.9.1/")

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

find_package(Qt5 COMPONENTS Quick Core REQUIRED)

qt5_add_resources(RESOURCES qml.qrc)

add_executable(${PROJECT_NAME} "main.cpp" "qml.qrc")

qt5_use_modules(${PROJECT_NAME} Quick Core)

target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Quick)

Here is the output of cmake .

:~/junk/qtquick_hello_cmake$ cmake .
CMake Error at CMakeLists.txt:11 (find_package):
  By not providing "FindQt5.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Qt5", but
  CMake did not find one.

  Could not find a package configuration file provided by "Qt5" with any of
  the following names:

    Qt5Config.cmake
    qt5-config.cmake

  Add the installation prefix of "Qt5" to CMAKE_PREFIX_PATH or set "Qt5_DIR"
  to a directory containing one of the above files.  If "Qt5" provides a
  separate development package or SDK, be sure it has been installed.


-- Configuring incomplete, errors occurred!
See also "/home/.../junk/qtquick_hello_cmake/CMakeFiles/CMakeOutput.log".

This is to show that /opt/Qt5.9.1/ does exist.

:~/junk/qtquick_hello_cmake$ cd /opt/Qt5.9.1/5.9.1/
:/opt/Qt5.9.1/5.9.1$ ls
android_armv7  android_x86  gcc_64  Src

Here I run the cmake with -DCMAKE option, but the output is still same:

:~/junk/qtquick_hello_cmake$ cmake -DCMAKE_PREFIX_PATH=/opt/Qt5.9.1/5.9.1/ -DWITH_QT5=1 .
CMake Error at CMakeLists.txt:11 (find_package):
  By not providing "FindQt5.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Qt5", but
  CMake did not find one.

  Could not find a package configuration file provided by "Qt5" with any of
  the following names:

    Qt5Config.cmake
    qt5-config.cmake

  Add the installation prefix of "Qt5" to CMAKE_PREFIX_PATH or set "Qt5_DIR"
  to a directory containing one of the above files.  If "Qt5" provides a
  separate development package or SDK, be sure it has been installed.


-- Configuring incomplete, errors occurred!
See also "/home/.../junk/qtquick_hello_cmake/CMakeFiles/CMakeOutput.log".

Contents of the directory:

:~/junk/qtquick_hello_cmake$ ls
CMakeCache.txt  CMakeFiles  CMakeLists.txt  main.cpp  main.qml  qml.qrc

Solution

  • I installed the following missing packages:

    sudo apt-get install qtbase5-dev
    sudo apt-get install qtdeclarative5-dev
    

    Attaching any kind of prefix is not required now:

    CMakeList:

        :~/junk/qtquick_hello_cmake$ cat CMakeLists.txt
        cmake_minimum_required(VERSION 2.8.12)
        
        project(qtquick_hello_cmake)
        
        set(CMAKE_INCLUDE_CURRENT_DIR ON)
        set(CMAKE_AUTOMOC ON)
        set(CMAKE_AUTORCC ON)
        
        find_package(Qt5 COMPONENTS Quick Core REQUIRED)
        
        qt5_add_resources(RESOURCES qml.qrc)
        
        add_executable(${PROJECT_NAME} "main.cpp" "qml.qrc")
        
        qt5_use_modules(${PROJECT_NAME} Quick Core)
        
        target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Quick)
    

    New output:

    :~/junk/qtquick_hello_cmake$ ls
    build  CMakeLists.txt  main.cpp  main.qml  qml.qrc
    
    :~/junk/qtquick_hello_cmake$ cd build/
    :~/junk/qtquick_hello_cmake/build$ rm -rf *
    
    :~/junk/qtquick_hello_cmake/build$ cmake ../
    -- The C compiler identification is GNU 4.8.4
    -- The CXX compiler identification is GNU 4.8.4
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- 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
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/.../junk/qtquick_hello_cmake/build
    

    Errors are gone now.

    Thanks to:
    https://answers.ros.org/question/236324/could-not-find-a-package-configuration-file-provided-by-qt5widgets/
    https://askubuntu.com/questions/508503/whats-the-development-package-for-qt5-in-14-04