[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-frameworks-devel
Subject:    Re: KArchive for Qt4
From:       Alexander Neundorf <neundorf () kde ! org>
Date:       2012-11-22 21:15:51
Message-ID: 201211222215.52261.neundorf () kde ! org
[Download RAW message or body]

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

["ECMSetupVersion.cmake" (text/x-cmake)]

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()


["CMakeLists.txt" (text/x-cmake)]

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic