From 5aa5116edcb0cb61e2e3f0ec3adcf48667691141 Mon Sep 17 00:00:00 2001 From: Mario Werner Date: Fri, 29 Jan 2016 16:39:03 +0100 Subject: [PATCH] moved the library definition and the installation into a sub CMakeLists.txt --- CMakeLists.txt | 84 +--------------------------------------- cppformat/CMakeLists.txt | 82 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 83 deletions(-) create mode 100644 cppformat/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index f036aa61..e5a40878 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,50 +71,7 @@ if (BIICODE) return() endif () -#------------------------------------------------------------------------------ -# define the cppformat library, its includes and the needed defines -set(FMT_SOURCES cppformat/format.cc cppformat/format.h) -if (HAVE_OPEN) - set(FMT_SOURCES ${FMT_SOURCES} cppformat/posix.cc cppformat/posix.h) -endif () - -add_library(cppformat ${FMT_SOURCES}) - -target_compile_options(cppformat PUBLIC ${CPP11_FLAG}) # starting with cmake 3.1 the CXX_STANDARD property can be used -if (FMT_PEDANTIC) - target_compile_options(cppformat PRIVATE ${PEDANTIC_COMPILE_FLAGS}) -endif () - -target_compile_definitions(cppformat INTERFACE - FMT_USE_FILE_DESCRIPTORS=$) - -target_include_directories(cppformat INTERFACE - $ - $) - -set_target_properties(cppformat PROPERTIES - VERSION ${CPPFORMAT_VERSION} SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}) - -if (BUILD_SHARED_LIBS) - if (UNIX AND NOT APPLE) - # Fix rpmlint warning: - # unused-direct-shlib-dependency /usr/lib/libformat.so.1.1.0 /lib/libm.so.6. - target_link_libraries(cppformat -Wl,--as-needed) - endif () - target_compile_definitions(cppformat PRIVATE FMT_EXPORT INTERFACE FMT_SHARED) -endif () - -#------------------------------------------------------------------------------ -# additionally define a header only library when cmake is new enough -if (CMAKE_VERSION VERSION_GREATER 3.1.0 OR CMAKE_VERSION VERSION_EQUAL 3.1.0) - add_library(cppformat-header-only INTERFACE) - - target_compile_definitions(cppformat-header-only INTERFACE FMT_HEADER_ONLY=1) - - target_include_directories(cppformat-header-only INTERFACE - $ - $) -endif () +add_subdirectory(cppformat) if (FMT_DOC) add_subdirectory(doc) @@ -125,8 +82,6 @@ if (FMT_TEST) add_subdirectory(test) endif () - - set(gitignore ${PROJECT_SOURCE_DIR}/.gitignore) if (EXISTS ${gitignore}) # Get the list of ignored files from .gitignore. @@ -147,40 +102,3 @@ if (EXISTS ${gitignore}) set(CPACK_RESOURCE_FILE_README ${PROJECT_SOURCE_DIR}/README.rst) include(CPack) endif () - -# Install targets. -if (FMT_INSTALL) - include(CMakePackageConfigHelpers) - set(config_install_dir lib/cmake/cppformat) - set(version_config ${CMAKE_CURRENT_BINARY_DIR}/cppformat-config-version.cmake) - set(project_config ${CMAKE_CURRENT_BINARY_DIR}/cppformat-config.cmake) - set(targets_export_name cppformat-targets) - - set(FMT_LIB_DIR lib CACHE STRING - "Installation directory for libraries, relative to ${CMAKE_INSTALL_PREFIX}.") - - # Generate the version, config and target files into the build directory. - write_basic_package_version_file( - ${version_config} - VERSION ${CPPFORMAT_VERSION} - COMPATIBILITY AnyNewerVersion) - configure_package_config_file( - support/cmake/cppformat-config.cmake.in - ${project_config} - INSTALL_DESTINATION ${config_install_dir}) - set(CPPFORMAT_LIBRARY_TARGETS cppformat) - if (TARGET cppformat-header-only) - set(CPPFORMAT_LIBRARY_TARGETS ${CPPFORMAT_LIBRARY_TARGETS} cppformat-header-only) - endif () - export(TARGETS ${CPPFORMAT_LIBRARY_TARGETS} FILE ${targets_export_name}.cmake) - - # Install version, config and target files. - install( - FILES ${project_config} ${version_config} - DESTINATION ${config_install_dir}) - install(EXPORT ${targets_export_name} DESTINATION ${config_install_dir}) - - # Install the library and the include file. - install(TARGETS cppformat EXPORT ${targets_export_name} DESTINATION ${FMT_LIB_DIR}) - install(FILES cppformat/format.h DESTINATION include/cppformat) -endif () diff --git a/cppformat/CMakeLists.txt b/cppformat/CMakeLists.txt new file mode 100644 index 00000000..cfa14124 --- /dev/null +++ b/cppformat/CMakeLists.txt @@ -0,0 +1,82 @@ +#------------------------------------------------------------------------------ +# define the cppformat library, its includes and the needed defines +set(FMT_SOURCES format.cc format.h) +if (HAVE_OPEN) + set(FMT_SOURCES ${FMT_SOURCES} posix.cc posix.h) +endif () + +add_library(cppformat ${FMT_SOURCES}) + +target_compile_options(cppformat PUBLIC ${CPP11_FLAG}) # starting with cmake 3.1 the CXX_STANDARD property can be used +if (FMT_PEDANTIC) + target_compile_options(cppformat PRIVATE ${PEDANTIC_COMPILE_FLAGS}) +endif () + +target_compile_definitions(cppformat INTERFACE + FMT_USE_FILE_DESCRIPTORS=$) + +target_include_directories(cppformat INTERFACE + $ + $) + +set_target_properties(cppformat PROPERTIES + VERSION ${CPPFORMAT_VERSION} SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}) + +if (BUILD_SHARED_LIBS) + if (UNIX AND NOT APPLE) + # Fix rpmlint warning: + # unused-direct-shlib-dependency /usr/lib/libformat.so.1.1.0 /lib/libm.so.6. + target_link_libraries(cppformat -Wl,--as-needed) + endif () + target_compile_definitions(cppformat PRIVATE FMT_EXPORT INTERFACE FMT_SHARED) +endif () + +#------------------------------------------------------------------------------ +# additionally define a header only library when cmake is new enough +if (CMAKE_VERSION VERSION_GREATER 3.1.0 OR CMAKE_VERSION VERSION_EQUAL 3.1.0) + add_library(cppformat-header-only INTERFACE) + + target_compile_definitions(cppformat-header-only INTERFACE FMT_HEADER_ONLY=1) + + target_include_directories(cppformat-header-only INTERFACE + $ + $) +endif () + +# Install targets. +if (FMT_INSTALL) + include(CMakePackageConfigHelpers) + set(config_install_dir lib/cmake/cppformat) + set(version_config ${PROJECT_BINARY_DIR}/cppformat-config-version.cmake) + set(project_config ${PROJECT_BINARY_DIR}/cppformat-config.cmake) + set(targets_export_name cppformat-targets) + + set(FMT_LIB_DIR lib CACHE STRING + "Installation directory for libraries, relative to ${CMAKE_INSTALL_PREFIX}.") + + # Generate the version, config and target files into the build directory. + write_basic_package_version_file( + ${version_config} + VERSION ${CPPFORMAT_VERSION} + COMPATIBILITY AnyNewerVersion) + configure_package_config_file( + ${PROJECT_SOURCE_DIR}/support/cmake/cppformat-config.cmake.in + ${project_config} + INSTALL_DESTINATION ${config_install_dir}) + + if (TARGET cppformat-header-only) + export(TARGETS cppformat cppformat-header-only FILE ${PROJECT_BINARY_DIR}/${targets_export_name}.cmake) + else () + export(TARGETS cppformat FILE ${PROJECT_BINARY_DIR}/${targets_export_name}.cmake) + endif () + + # Install version, config and target files. + install( + FILES ${project_config} ${version_config} + DESTINATION ${config_install_dir}) + install(EXPORT ${targets_export_name} DESTINATION ${config_install_dir}) + + # Install the library and the include file. + install(TARGETS cppformat EXPORT ${targets_export_name} DESTINATION ${FMT_LIB_DIR}) + install(FILES format.h DESTINATION include/cppformat) +endif ()