Adding qrc icon resource to a CMake Qt project



  • Hey,

    I'm currently trying to add a icon to my cmake project, to be able to use it as SystemTrayIcon,
    it works fine when using qmake via

    Hierarchy:
    
    resources.qrc
       /icons
             myicon.ico
    
    .pro
    RESOURCES += \
        resource.qrc
    
    icon code: 
     auto icon = QIcon(":/icons/myicon.ico");
    

    but it doesn't work with cmake using the following cmake commands:

    qt5_add_resources(resource.qrc)
    
    

    or

    
    add_executeable(resource.qrc)
    

    has anyone any idea what i'm doing wrong?

    thanks

    ~slei



  • @Slei said in Adding qrc icon resource to a CMake Qt project:

    qt5_add_resources(resource.qrc)

    It must be qt5_add_resources(srcs_for_exe resource.qrc) and then later add_executable(... ${srcs_for_exe})
    See http://doc.qt.io/qt-5/cmake-manual.html#macro-reference



  • ok it generated a resource .cpp now with all the icon data, which seems to be good. bit it still doen't display an icon in the systemtray so something else might be wrong


  • Lifetime Qt Champion

    Hi,

    Did you ensure that the generated cpp file gets compiled and linked properly ?



  • do I have to do anything special with cmake or should this be done automatically with one of those

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


  • i probably should add that I'm currently using a source build, maybe the there is no .ico support by default?
    but I've alos tried it with png and jpg


  • Lifetime Qt Champion

    Can you show your CMakeList.txt file ?



  • This post is deleted!


  • @SGaist said in Adding qrc icon resource to a CMake Qt project:

    Can you show your CMakeList.txt file ?

    I've tried it with GLOB for qrc or directly adding a qrc to the executable (custom cmake function in my case)

    /       file(GLOB source_files *.c *.cpp *.qrc)
           file(GLOB header_files *.h *.hpp *.txt)
    
    	set(CMAKE_INCLUDE_CURRENT_DIR ON)
    	set(CMAKE_AUTOMOC ON)
    	set(CMAKE_AUTORCC ON)
    	set(CMAKE_AUTOUIC ON)
    	find_package(Qt5Widgets REQUIRED)
    	find_package(Qt5WebEngineWidgets REQUIRED)
    	find_package(Qt5WebChannel REQUIRED)
    
    
    	qt5_add_resources(COLYOO_QT_RESOURCES app.qrc web.qrc)
    
    	message(STATUS "SLEIDEBUG:${COLYOO_QT_RESOURCES}")
    
    
           # add the GUI WIN32 executable
           cyo_add_executable(${PROJECT_NAME} WIN32 ${source_files} ${header_files} chatwidget.ui ${COLYOO_QT_RESOURCES})
    


  • if you have set(CMAKE_AUTORCC ON) then there's no need to call qt5_add_resources just add your .qrc files to the list of sources for the target as they were .cpp files



  • @VRonin

    I've heard about that but it still doesn't work :o



  • @VRonin do I still have to add it to the executable and GLOB it then? or is this also done automatically with the AUTORCC



  • you don't have to GLOB it, you can GLOB it. You could also add .qrc files in the same way you are adding chatwidget.ui at the moment



  • @Slei said in Adding qrc icon resource to a CMake Qt project:

    COLYOO_QT_RESOURCES

    ok i think it works now, for whatever reason I'll test it a few times to be 100% sure, thsi is my current cmakelists.txt

        # search all source and header files
        file(GLOB source_files *.c *.cpp *.qrc)
        file(GLOB header_files *.h *.hpp *.txt)
    
    	set(CMAKE_INCLUDE_CURRENT_DIR ON)
    	set(CMAKE_AUTOMOC ON)
    	set(CMAKE_AUTORCC ON)
    	set(CMAKE_AUTOUIC ON)
    	find_package(Qt5Widgets REQUIRED)
    	find_package(Qt5WebEngineWidgets REQUIRED)
    	find_package(Qt5WebChannel REQUIRED)
    
    
    	#qt5_add_resources(COLYOO_QT_RESOURCES app.qrc web.qrc)
    
    	message(STATUS "SLEIDEBUG:${COLYOO_QT_RESOURCES}")
    
    
        # add the GUI WIN32 executable
        cyo_add_executable(${PROJECT_NAME} WIN32 ${source_files} ${header_files} chatwidget.ui ${COLYOO_QT_RESOURCES})
    

    but i think i tried this version once before and it didn't work lol ._.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.