Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Language Bindings
  4. build my own library with Cmake in Qt6

build my own library with Cmake in Qt6

Scheduled Pinned Locked Moved Unsolved Language Bindings
11 Posts 2 Posters 2.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W Offline
    W Offline
    withwind
    wrote on 16 Nov 2022, 09:34 last edited by
    #1

    Hallo everyone, i try to build my own libary and try to reuse it, but the setting in Cmake seems not working, my include of the built libray is not recognized by system,

    do have anyone a general tutorial or tell me now how can man build his own library with Cmake in Qt6 and can be set to reuse them in programm? Thanks a lot.

    J 1 Reply Last reply 16 Nov 2022, 09:43
    0
    • W withwind
      16 Nov 2022, 09:34

      Hallo everyone, i try to build my own libary and try to reuse it, but the setting in Cmake seems not working, my include of the built libray is not recognized by system,

      do have anyone a general tutorial or tell me now how can man build his own library with Cmake in Qt6 and can be set to reuse them in programm? Thanks a lot.

      J Offline
      J Offline
      jsulm
      Lifetime Qt Champion
      wrote on 16 Nov 2022, 09:43 last edited by
      #2

      @withwind If I understood you correctly you are able to build the lib, but you can't use it.
      So, how do you add this lib to your project (show your CMakeLists.txt)?

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      W 1 Reply Last reply 16 Nov 2022, 11:05
      0
      • W Offline
        W Offline
        withwind
        wrote on 16 Nov 2022, 10:48 last edited by
        #3

        thanks for answer,

        i have tried to build a small dynamish linked libary called mylib, it is built with Cmake and i got the libmylib.dll and libmylib.dll.a, i try to reuse it in my another program, i include it like "#include "mylib"" but it is not recognized,showing "no such file or directory".

        I dont know how to make it recognized. Maybe some path setting in CMakeList.text.

        I try to set some path in CMakeText.text, but maybe the setting is not correct. Many tutorials are showd with Qmake, it help litte.my cmake text:

        cmake_minimum_required(VERSION 3.14)

        project(libPing LANGUAGES CXX)

        set(CMAKE_INCLUDE_CURRENT_DIR ON)
        set(CMAKE_AUTOUIC ON)
        set(CMAKE_AUTOMOC ON)
        set(CMAKE_AUTORCC ON)
        set(CMAKE_CXX_STANDARD 17)
        set(CMAKE_CXX_STANDARD_REQUIRED ON)

        find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
        find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)

        add_library(libPing SHARED
        libPing_global.h
        libping.cpp
        libping.h
        )

        target_link_libraries(libPing PRIVATE Qt${QT_VERSION_MAJOR}::Core)

        target_compile_definitions(libPing PRIVATE LIBPING_LIBRARY)

        target_include_directories(libPing INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

        1 Reply Last reply
        0
        • J jsulm
          16 Nov 2022, 09:43

          @withwind If I understood you correctly you are able to build the lib, but you can't use it.
          So, how do you add this lib to your project (show your CMakeLists.txt)?

          W Offline
          W Offline
          withwind
          wrote on 16 Nov 2022, 11:05 last edited by withwind
          #4

          @jsulm

          thanks for answer,

          i have tried to build a small dynamish linked libary called libPing, it is built with Cmake and i got the liblibPing.dll and liblibPing.dll.a, i try to reuse it in my another program, i include it like "#include "libPing"" but it is not recognized,showing "no such file or directory".

          I dont know how to make it recognized. Maybe some path setting in CMakeList.text.

          I try to set some path in CMakeText.text, but maybe the setting is not correct. Many tutorials are showd with Qmake, it help litte.my cmake text:
          cmake_minimum_required(VERSION 3.14)

          project(libPing LANGUAGES CXX)

          set(CMAKE_INCLUDE_CURRENT_DIR ON)
          set(CMAKE_AUTOUIC ON)
          set(CMAKE_AUTOMOC ON)
          set(CMAKE_AUTORCC ON)
          set(CMAKE_CXX_STANDARD 17)
          set(CMAKE_CXX_STANDARD_REQUIRED ON)

          find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
          find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)

          add_library(libPing SHARED
          libPing_global.h
          libping.cpp
          libping.h
          )

          target_link_libraries(libPing PRIVATE Qt${QT_VERSION_MAJOR}::Core)

          target_compile_definitions(libPing PRIVATE LIBPING_LIBRARY)

          target_include_directories(libPing INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

          J 1 Reply Last reply 16 Nov 2022, 11:24
          0
          • W withwind
            16 Nov 2022, 11:05

            @jsulm

            thanks for answer,

            i have tried to build a small dynamish linked libary called libPing, it is built with Cmake and i got the liblibPing.dll and liblibPing.dll.a, i try to reuse it in my another program, i include it like "#include "libPing"" but it is not recognized,showing "no such file or directory".

            I dont know how to make it recognized. Maybe some path setting in CMakeList.text.

            I try to set some path in CMakeText.text, but maybe the setting is not correct. Many tutorials are showd with Qmake, it help litte.my cmake text:
            cmake_minimum_required(VERSION 3.14)

            project(libPing LANGUAGES CXX)

            set(CMAKE_INCLUDE_CURRENT_DIR ON)
            set(CMAKE_AUTOUIC ON)
            set(CMAKE_AUTOMOC ON)
            set(CMAKE_AUTORCC ON)
            set(CMAKE_CXX_STANDARD 17)
            set(CMAKE_CXX_STANDARD_REQUIRED ON)

            find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
            find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)

            add_library(libPing SHARED
            libPing_global.h
            libping.cpp
            libping.h
            )

            target_link_libraries(libPing PRIVATE Qt${QT_VERSION_MAJOR}::Core)

            target_compile_definitions(libPing PRIVATE LIBPING_LIBRARY)

            target_include_directories(libPing INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

            J Offline
            J Offline
            jsulm
            Lifetime Qt Champion
            wrote on 16 Nov 2022, 11:24 last edited by
            #5

            @withwind I wanted to see your CMakeLists.txt where you are ADDING your library to the project, not the one to build library itself. So, please show CMakeLists.txt from the project which USES the library. In that CMakeLists.txt you need to link your library to your project using https://cmake.org/cmake/help/latest/command/target_link_libraries.html

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            W 1 Reply Last reply 16 Nov 2022, 11:41
            0
            • J jsulm
              16 Nov 2022, 11:24

              @withwind I wanted to see your CMakeLists.txt where you are ADDING your library to the project, not the one to build library itself. So, please show CMakeLists.txt from the project which USES the library. In that CMakeLists.txt you need to link your library to your project using https://cmake.org/cmake/help/latest/command/target_link_libraries.html

              W Offline
              W Offline
              withwind
              wrote on 16 Nov 2022, 11:41 last edited by
              #6

              @jsulm
              thanks again!
              that means, for using the custom library, man have to set the CMakeLists.txt in the project. The CMakeLists.txt is:

              cmake_minimum_required(VERSION 3.14)

              project(demoPing LANGUAGES CXX)

              set(CMAKE_INCLUDE_CURRENT_DIR ON)

              set(CMAKE_AUTOUIC ON)
              set(CMAKE_AUTOMOC ON)
              set(CMAKE_AUTORCC ON)

              set(CMAKE_CXX_STANDARD 17)
              set(CMAKE_CXX_STANDARD_REQUIRED ON)

              find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
              find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)

              add_executable(demoPing
              main.cpp
              )
              target_link_libraries(demoPing Qt${QT_VERSION_MAJOR}::Core)

              install(TARGETS demoPing
              LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

              J 1 Reply Last reply 16 Nov 2022, 11:44
              0
              • W withwind
                16 Nov 2022, 11:41

                @jsulm
                thanks again!
                that means, for using the custom library, man have to set the CMakeLists.txt in the project. The CMakeLists.txt is:

                cmake_minimum_required(VERSION 3.14)

                project(demoPing LANGUAGES CXX)

                set(CMAKE_INCLUDE_CURRENT_DIR ON)

                set(CMAKE_AUTOUIC ON)
                set(CMAKE_AUTOMOC ON)
                set(CMAKE_AUTORCC ON)

                set(CMAKE_CXX_STANDARD 17)
                set(CMAKE_CXX_STANDARD_REQUIRED ON)

                find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
                find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)

                add_executable(demoPing
                main.cpp
                )
                target_link_libraries(demoPing Qt${QT_VERSION_MAJOR}::Core)

                install(TARGETS demoPing
                LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

                J Offline
                J Offline
                jsulm
                Lifetime Qt Champion
                wrote on 16 Nov 2022, 11:44 last edited by
                #7

                @withwind said in build my own library with Cmake in Qt6:

                target_link_libraries(demoPing Qt${QT_VERSION_MAJOR}::Core)

                No wonder it does not work: you do not link your lib to your executable...

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                W 1 Reply Last reply 16 Nov 2022, 11:57
                0
                • J jsulm
                  16 Nov 2022, 11:44

                  @withwind said in build my own library with Cmake in Qt6:

                  target_link_libraries(demoPing Qt${QT_VERSION_MAJOR}::Core)

                  No wonder it does not work: you do not link your lib to your executable...

                  W Offline
                  W Offline
                  withwind
                  wrote on 16 Nov 2022, 11:57 last edited by
                  #8

                  @jsulm
                  Can you can tell me how to link my lib to my project? thanks

                  J 1 Reply Last reply 16 Nov 2022, 11:58
                  0
                  • W withwind
                    16 Nov 2022, 11:57

                    @jsulm
                    Can you can tell me how to link my lib to my project? thanks

                    J Offline
                    J Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on 16 Nov 2022, 11:58 last edited by
                    #9

                    @withwind I already did above: "you need to link your library to your project using https://cmake.org/cmake/help/latest/command/target_link_libraries.html"

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    W 1 Reply Last reply 16 Nov 2022, 12:59
                    0
                    • J jsulm
                      16 Nov 2022, 11:58

                      @withwind I already did above: "you need to link your library to your project using https://cmake.org/cmake/help/latest/command/target_link_libraries.html"

                      W Offline
                      W Offline
                      withwind
                      wrote on 16 Nov 2022, 12:59 last edited by
                      #10

                      @jsulm
                      i have added this in my CMake file in project:

                      add_library(libPing SHARED ../libPing/libping.h)
                      target_link_libraries(libPing PRIVATE Qt6::Core)

                      but it doesn't work

                      can you give me some instructions? thanks

                      J 1 Reply Last reply 16 Nov 2022, 14:50
                      0
                      • W withwind
                        16 Nov 2022, 12:59

                        @jsulm
                        i have added this in my CMake file in project:

                        add_library(libPing SHARED ../libPing/libping.h)
                        target_link_libraries(libPing PRIVATE Qt6::Core)

                        but it doesn't work

                        can you give me some instructions? thanks

                        J Offline
                        J Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on 16 Nov 2022, 14:50 last edited by
                        #11

                        @withwind You need to have something like

                        target_link_libraries(demoPing libPing...
                        

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        1

                        9/11

                        16 Nov 2022, 11:58

                        • Login

                        • Login or register to search.
                        9 out of 11
                        • First post
                          9/11
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved