Hi, attached is what I have so far, and I think this is how I want it to be. Creating the Config.cmake files is IMO too project specific to be generalized. Beside that, I want developers to know about these files, to know what they are for, what they should contain. Among others, so that they are able to help users (people building their software) if something goes wrong with this Config.cmake files.
This uses now a new ecm_setup_version() macro: ecm_setup_version(5 0 0 VARIABLE_PREFIX FOO [SOVERSION 4] [VERSION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/foo-version.h] [PACKAGE_VERSION_FILE ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake] ) as suggested earlier. The file with the macro and the modified CMakeLists.txt are attached (I think it makes more sense in this case to have a look at the complete file than to just see a patch). Comments are welcome. If there are not serious objections, I'll commit this in the next days and go through the frameworks one by one. Alex
include(CMakePackageConfigHelpers) function(ECM_SETUP_VERSION _major _minor _patch) set(options ) set(oneValueArgs VARIABLE_PREFIX SOVERSION VERSION_HEADER PACKAGE_VERSION_FILE) set(multiValueArgs SOVERSION VERSION_HEADER_FILE PACKAGE_VERSION_FILE) cmake_parse_arguments(ESV "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(ESV_UNPARSED_ARGUMENTS) message(FATAL_ERROR "Unknown keywords given to ECM_SETUP_VERSION(): \"${ESV_UNPARSED_ARGUMENTS}\"") endif() if(NOT ESV_VARIABLE_PREFIX) message(FATAL_ERROR "Required argument PREFIX missing in ECM_SETUP_VERSION() call") endif() if(NOT ESV_SOVERSION) set(ESV_SOVERSION ${_major}) endif() set(${ESV_VARIABLE_PREFIX}_VERSION_MAJOR ${_major}) set(${ESV_VARIABLE_PREFIX}_VERSION_MINOR ${_minor}) set(${ESV_VARIABLE_PREFIX}_VERSION_PATCH ${_patch}) set(${ESV_VARIABLE_PREFIX}_SOVERSION ${ESV_SOVERSION}) set(${ESV_VARIABLE_PREFIX}_VERSION_STRING "${_major}.${_minor}.${_patch}") if(ESV_VERSION_HEADER) set(PROJECT_NAME_UPPER "${ESV_VARIABLE_PREFIX}") set(ECM_VERSION_STRING "${${ESV_VARIABLE_PREFIX}_VERSION_STRING}") set(ECM_VERSION_MAJOR "${${ESV_VARIABLE_PREFIX}_VERSION_MAJOR}") set(ECM_VERSION_MINOR "${${ESV_VARIABLE_PREFIX}_VERSION_MINOR}") set(ECM_VERSION_PATCH "${${ESV_VARIABLE_PREFIX}_VERSION_PATCH}") configure_file("${ECM_MODULE_DIR}/ECMVersionHeader.h.in" "${ESV_VERSION_HEADER}") endif() if(ESV_PACKAGE_VERSION_FILE) write_basic_package_version_file("${ESV_PACKAGE_VERSION_FILE}" VERSION ${_major}.${_minor}.${_patch} COMPATIBILITY AnyNewerVersion) endif() set(${ESV_VARIABLE_PREFIX}_VERSION_MAJOR "${${ESV_VARIABLE_PREFIX}_VERSION_MAJOR}" PARENT_SCOPE) set(${ESV_VARIABLE_PREFIX}_VERSION_MINOR "${${ESV_VARIABLE_PREFIX}_VERSION_MINOR}" PARENT_SCOPE) set(${ESV_VARIABLE_PREFIX}_VERSION_PATCH "${${ESV_VARIABLE_PREFIX}_VERSION_PATCH}" PARENT_SCOPE) set(${ESV_VARIABLE_PREFIX}_SOVERSION "${${ESV_VARIABLE_PREFIX}_SOVERSION}" PARENT_SCOPE) set(${ESV_VARIABLE_PREFIX}_VERSION_STRING "${${ESV_VARIABLE_PREFIX}_VERSION_STRING}" PARENT_SCOPE) endfunction()
cmake_minimum_required(VERSION 2.8.10.1) project(threadweaver) find_package(ECM 0.0.5 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) find_package(KF5 5.0.0 REQUIRED MODULE COMPONENTS CMake Compiler InstallDirs) find_package(Qt5Transitional REQUIRED Core Test) include(FeatureSummary) include(ECMSetupVersion) # -- Maintained by scripty ecm_setup_version(5 0 0 VARIABLE_PREFIX THREADWEAVER VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/threadweaver_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/threadweaverConfigVersion.cmake") # -- add_subdirectory(src) add_subdirectory(autotests) #add_subdirectory(examples) # create a Config.cmake and a ConfigVersion.cmake file and install them set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/threadweaver") include(CMakePackageConfigHelpers) configure_package_config_file( "${CMAKE_CURRENT_LIST_DIR}/threadweaverConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/threadweaverConfig.cmake" INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} PATH_VARS INCLUDE_INSTALL_DIR LIB_INSTALL_DIR CMAKE_INSTALL_PREFIX ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/threadweaver_version.h DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT Devel ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/threadweaverConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/threadweaverConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) install(EXPORT threadweaverTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE threadweaverTargets.cmake NAMESPACE KDE4__ ) if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}") feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) endif()
_______________________________________________ Kde-frameworks-devel mailing list Kde-frameworks-devel@kde.org https://mail.kde.org/mailman/listinfo/kde-frameworks-devel