Skip to content

Commit

Permalink
Copy resources to build dir
Browse files Browse the repository at this point in the history
Fix #31796
  • Loading branch information
m-kuhn authored and nyalldawson committed Oct 25, 2019
1 parent ab51de0 commit 651b7b1
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 29 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Expand Up @@ -189,7 +189,7 @@ IF(WITH_CORE)
# The qgis_desktop target is meant to build a minimal but complete running QGIS during development
# This should help to reduce compile time while still having a "complete enough" QGIS for most of the development
ADD_CUSTOM_TARGET(qgis_desktop
DEPENDS qgis qgispython pycore pygui pyanalysis postgresprovider staged-plugins pyplugin-installer
DEPENDS qgis qgispython pycore pygui pyanalysis postgresprovider staged-plugins pyplugin-installer resources
)
ENDIF ()

Expand Down
94 changes: 69 additions & 25 deletions resources/CMakeLists.txt
@@ -1,36 +1,80 @@
IF (PROJ_VERSION_MAJOR GREATER 5)
MESSAGE(STATUS "Using PROJ 6 srs database.")
SET(SRSDB srs6.db)
ELSE (PROJ_VERSION_MAJOR GREATER 5)
MESSAGE(STATUS "Using PROJ <6 srs database.")
SET(SRSDB srs.db)
ENDIF (PROJ_VERSION_MAJOR GREATER 5)
# Folders to install
FILE(GLOB_RECURSE CPT_CITY_QGIS_MIN_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} cpt-city-qgis-min/*)
FILE(GLOB_RECURSE THEMES_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} themes/*)
FILE(GLOB_RECURSE DATA_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} data/*)
FILE(GLOB_RECURSE METADATA_ISO_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} metadata-ISO/*)
FILE(GLOB_RECURSE PALETTES_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} palettes/*)

INSTALL(FILES ${SRSDB} DESTINATION ${QGIS_DATA_DIR}/resources RENAME srs.db)
# Individual files to install (for srs.db, see below)
SET(RESOURCES_FILES
qgis.db
symbology-style.xml
spatialite.db
customization.xml
2to3migration.txt
qgis_global_settings.ini
${CPT_CITY_QGIS_MIN_FILES}
${THEMES_FILES}
${DATA_FILES}
${METADATA_ISO_FILES}
${PALETTES_FILES}
)

INSTALL(FILES
qgis.db
symbology-style.xml
spatialite.db
customization.xml
2to3migration.txt
qgis_global_settings.ini
DESTINATION ${QGIS_DATA_DIR}/resources)
INSTALL(DIRECTORY cpt-city-qgis-min DESTINATION ${QGIS_DATA_DIR}/resources)
INSTALL(DIRECTORY themes DESTINATION ${QGIS_DATA_DIR}/resources)
INSTALL(DIRECTORY data DESTINATION ${QGIS_DATA_DIR}/resources)
INSTALL(DIRECTORY metadata-ISO DESTINATION ${QGIS_DATA_DIR}/resources)
INSTALL(DIRECTORY palettes DESTINATION ${QGIS_DATA_DIR}/resources)
# OpenCL, also install opencl_programs
IF (HAVE_OPENCL)
INSTALL(DIRECTORY opencl_programs DESTINATION ${QGIS_DATA_DIR}/resources)
FILE(GLOB_RECURSE OPENCL_PROGRAMS_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} opencl_programs/*)
SET(RESOURCES_FILES ${RESOURCES_FILES} ${OPENCL_PROGRAMS_FILES})
ENDIF (HAVE_OPENCL)

# Server, also install server subdirectory
IF (WITH_SERVER)
INSTALL(DIRECTORY server DESTINATION ${QGIS_DATA_DIR}/resources)
FILE(GLOB_RECURSE SERVER_RESOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} server/*)
SET(RESOURCES_FILES ${RESOURCES_FILES} ${SERVER_RESOURCE_FILES})
ENDIF (WITH_SERVER)

# Apple specific handling
IF (APPLE)
# ASN.1 definition files of PKIX elements
INSTALL(FILES pkcs8.asn
DESTINATION ${QGIS_DATA_DIR}/resources)
SET(RESOURCES_FILES ${RESOURCES_FILES} pkcs8.asn)
ENDIF (APPLE)

# On build copy all resource files to build folder
FOREACH(RESOURCE_FILE ${RESOURCES_FILES})
ADD_CUSTOM_COMMAND(
OUTPUT "${CMAKE_BINARY_DIR}/output/resources/${RESOURCE_FILE}"
COMMAND cmake -E copy
"${CMAKE_CURRENT_SOURCE_DIR}/${RESOURCE_FILE}"
"${CMAKE_BINARY_DIR}/output/resources/${RESOURCE_FILE}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${RESOURCE_FILE}"
)
LIST(APPEND RESOURCE_FILES_DEST
"${CMAKE_BINARY_DIR}/output/resources/${RESOURCE_FILE}")
ENDFOREACH(RESOURCE_FILE)

# Install resources to system resource folder
FOREACH(RESOURCE_FILE ${RESOURCES_FILES})
GET_FILENAME_COMPONENT(PATH_NAME "resources/${RESOURCE_FILE}" PATH)
INSTALL( FILES "resources/${RESOURCE_FILE}" DESTINATION ${PATH_NAME})
ENDFOREACH()

# srs.db -- spcial handling because there is a switch and rename depending on proj version
IF (PROJ_VERSION_MAJOR GREATER 5)
MESSAGE(STATUS "Using PROJ 6 srs database.")
SET(SRSDB srs6.db)
ELSE (PROJ_VERSION_MAJOR GREATER 5)
MESSAGE(STATUS "Using PROJ <6 srs database.")
SET(SRSDB srs.db)
ENDIF (PROJ_VERSION_MAJOR GREATER 5)

ADD_CUSTOM_COMMAND(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/srs.db"
COMMAND cmake -E copy
"${CMAKE_CURRENT_SOURCE_DIR}/${SRSDB}"
"${CMAKE_CURRENT_BINARY_DIR}/srs.db"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${SRSDB}"
)
LIST(APPEND RESOURCE_FILES_DEST
"${CMAKE_CURRENT_BINARY_DIR}/srs.db")
INSTALL(FILES ${SRSDB} DESTINATION ${QGIS_DATA_DIR}/resources RENAME srs.db)

ADD_CUSTOM_TARGET(resources ALL DEPENDS ${RESOURCE_FILES_DEST})
2 changes: 1 addition & 1 deletion src/app/qgspluginregistry.cpp
Expand Up @@ -577,7 +577,7 @@ void QgsPluginRegistry::restoreSessionPlugins( const QString &pluginDirString )
// start - temporary fix for issue #5879, more above
if ( QgsApplication::isRunningFromBuildDir() )
{
QgsApplication::setPkgDataPath( QgsApplication::buildSourcePath() );
QgsApplication::setPkgDataPath( QgsApplication::buildOutputPath() );
}
// end - temporary fix for issue #5879
}
Expand Down
4 changes: 2 additions & 2 deletions src/core/qgsapplication.cpp
Expand Up @@ -237,7 +237,7 @@ void QgsApplication::init( QString profileFolder )
#else
setPluginPath( ABISYM( mBuildOutputPath ) + '/' + QStringLiteral( QGIS_PLUGIN_SUBDIR ) );
#endif
setPkgDataPath( ABISYM( mBuildSourcePath ) ); // directly source path - used for: doc, resources, svg
setPkgDataPath( ABISYM( mBuildOutputPath ) ); // directly source path - used for: doc, resources, svg
ABISYM( mLibraryPath ) = ABISYM( mBuildOutputPath ) + '/' + QGIS_LIB_SUBDIR + '/';
#if defined(_MSC_VER) && !defined(USING_NMAKE) && !defined(USING_NINJA)
ABISYM( mLibexecPath ) = ABISYM( mBuildOutputPath ) + '/' + QGIS_LIBEXEC_SUBDIR + '/' + ABISYM( mCfgIntDir ) + '/';
Expand Down Expand Up @@ -766,7 +766,7 @@ QString QgsApplication::resolvePkgPath()
}

if ( ABISYM( mRunningFromBuildDir ) )
return ABISYM( mBuildSourcePath );
return ABISYM( mBuildOutputPath );
else
return prefixPath + '/' + QStringLiteral( QGIS_DATA_SUBDIR );
}
Expand Down

0 comments on commit 651b7b1

Please sign in to comment.