mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 13:11:20 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
#
 | 
						|
# External resource support for CMake's Qt5 support, version 1.0
 | 
						|
# written by Grzegorz Antoniak <ga -at- anadoxin -dot- org>
 | 
						|
# http://github.com/antekone/qt5-external-resources-cmake
 | 
						|
#
 | 
						|
# Tested on CMake 3.2.2
 | 
						|
 | 
						|
# qt5_parse_rcc_depends function
 | 
						|
#
 | 
						|
# Based on original Qt5CoreMacros.cmake/qt5_add_resources function.
 | 
						|
 | 
						|
function(QT5_PARSE_RCC_DEPENDS infile)
 | 
						|
    set(_RC_DEPENDS)
 | 
						|
    if(EXISTS "${infile}")
 | 
						|
        #  parse file for dependencies
 | 
						|
        #  all files are absolute paths or relative to the location of the qrc file
 | 
						|
        file(READ "${infile}" _RC_FILE_CONTENTS)
 | 
						|
        string(REGEX MATCHALL "<file[^<]+" _RC_FILES "${_RC_FILE_CONTENTS}")
 | 
						|
        foreach(_RC_FILE ${_RC_FILES})
 | 
						|
            string(REGEX REPLACE "^<file[^>]*>" "" _RC_FILE "${_RC_FILE}")
 | 
						|
            if(NOT IS_ABSOLUTE "${_RC_FILE}")
 | 
						|
                set(_RC_FILE "${rc_path}/${_RC_FILE}")
 | 
						|
            endif()
 | 
						|
            set(_RC_DEPENDS ${_RC_DEPENDS} "${_RC_FILE}")
 | 
						|
        endforeach()
 | 
						|
        # Since this cmake macro is doing the dependency scanning for these files,
 | 
						|
        # let's make a configured file and add it as a dependency so cmake is run
 | 
						|
        # again when dependencies need to be recomputed.
 | 
						|
        qt5_make_output_file("${infile}" "" "qrc.depends" out_depends)
 | 
						|
        configure_file("${infile}" "${out_depends}" COPYONLY)
 | 
						|
 | 
						|
        set(out_depends_return ${out_depends} PARENT_SCOPE)
 | 
						|
        set(_RC_DEPENDS_RETURN ${_RC_DEPENDS} PARENT_SCOPE)
 | 
						|
    else()
 | 
						|
        # The .qrc file does not exist (yet). Let's add a dependency and hope
 | 
						|
        # that it will be generated later
 | 
						|
        set(out_depends)
 | 
						|
    endif()
 | 
						|
endfunction()
 | 
						|
 | 
						|
# qt5_add_external_resources function
 | 
						|
#
 | 
						|
# Usage:
 | 
						|
#
 | 
						|
#    qt5_add_external_resources(outfile res/infile.qrc)
 | 
						|
#
 | 
						|
# This should generate ${CMAKE_BINARY_DIR}/outfile.rcc, ready to be used inside
 | 
						|
# the application. You can also use it like this:
 | 
						|
#
 | 
						|
#    qt5_add_external_resources(outfile res/infile.qrc OPTIONS -someoption)
 | 
						|
#
 | 
						|
# if you would like to add some option to the RCC's command line.
 | 
						|
 | 
						|
function(QT5_ADD_EXTERNAL_RESOURCES rccfilename qrcfilename)
 | 
						|
    set(options)
 | 
						|
    set(oneValueArgs)
 | 
						|
    set(multiValueArgs OPTIONS)
 | 
						|
 | 
						|
    cmake_parse_arguments(_RCC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 | 
						|
 | 
						|
    set(rcc_files ${_RCC_UNPARSED_ARGUMENTS})
 | 
						|
    set(rcc_options ${_RCC_OPTIONS})
 | 
						|
 | 
						|
    get_filename_component(outfilename ${rccfilename} NAME_WE)
 | 
						|
    get_filename_component(infile ${qrcfilename} ABSOLUTE)
 | 
						|
    get_filename_component(rc_path ${infile} PATH)
 | 
						|
    set(outfile ${CMAKE_CURRENT_BINARY_DIR}/${outfilename}.rcc)
 | 
						|
 | 
						|
    qt5_parse_rcc_depends(${infile})
 | 
						|
 | 
						|
    add_custom_command(OUTPUT ${outfile}
 | 
						|
                       COMMAND ${Qt5Core_RCC_EXECUTABLE}
 | 
						|
                       ARGS ${rcc_options} -name ${outfilename} -o ${outfile} ${infile} -binary
 | 
						|
                       MAIN_DEPENDENCY ${infile}
 | 
						|
                       DEPENDS ${_RC_DEPENDS_RETURN} "${out_depends_return}" VERBATIM)
 | 
						|
    set(_RC_TARGETNAME "qrc_external_${outfilename}")
 | 
						|
    add_custom_target(${_RC_TARGETNAME} ALL DEPENDS ${outfile})
 | 
						|
endfunction()
 | 
						|
 | 
						|
# vim:set et:
 |