mirror of
https://github.com/fmtlib/fmt.git
synced 2025-03-15 16:20:59 +00:00
Merge pull request #264 from niosHD/improve-find-and-package-support
Improve find and package support
This commit is contained in:
commit
52ee516cf3
@ -20,5 +20,13 @@ matrix:
|
||||
- os: osx
|
||||
env: BUILD=Doc
|
||||
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- kubuntu-backports # cmake 2.8.12
|
||||
# - george-edison55-precise-backports # cmake 3.2.3
|
||||
packages:
|
||||
- cmake
|
||||
|
||||
script:
|
||||
- support/travis-build.py
|
||||
|
@ -1,6 +1,6 @@
|
||||
message(STATUS "CMake version: ${CMAKE_VERSION}")
|
||||
|
||||
cmake_minimum_required(VERSION 2.6)
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
|
||||
# Set the default CMAKE_BUILD_TYPE to Release.
|
||||
# This should be done before the project command since the latter can set
|
||||
@ -142,7 +142,7 @@ endif ()
|
||||
set_target_properties(cppformat PROPERTIES
|
||||
VERSION ${CPPFORMAT_VERSION} SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR})
|
||||
|
||||
if (EXISTS .gitignore)
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.gitignore")
|
||||
# Get the list of ignored files from .gitignore.
|
||||
file (STRINGS ".gitignore" lines)
|
||||
LIST(REMOVE_ITEM lines /doc/html)
|
||||
@ -156,15 +156,53 @@ if (EXISTS .gitignore)
|
||||
|
||||
set(CPACK_SOURCE_GENERATOR ZIP)
|
||||
set(CPACK_SOURCE_IGNORE_FILES ${ignored_files})
|
||||
set(CPACK_SOURCE_PACKAGE_FILE_NAME cppformat-${CPPFORMAT_VERSION})
|
||||
set(CPACK_SOURCE_PACKAGE_FILE_NAME "cppformat-${CPPFORMAT_VERSION}")
|
||||
set(CPACK_PACKAGE_NAME "cppformat")
|
||||
set(CPACK_RESOURCE_FILE_README ${FORMAT_SOURCE_DIR}/README.rst)
|
||||
include(CPack)
|
||||
endif ()
|
||||
|
||||
# Install targets.
|
||||
if (FMT_INSTALL)
|
||||
set(FMT_LIB_DIR lib CACHE STRING
|
||||
include(CMakePackageConfigHelpers)
|
||||
set(config_install_dir "lib/cmake/cppformat")
|
||||
set(version_config "${CMAKE_CURRENT_BINARY_DIR}/cppformatConfigVersion.cmake")
|
||||
set(project_config "${CMAKE_CURRENT_BINARY_DIR}/cppformatConfig.cmake")
|
||||
set(targets_export_name "cppformatTargets")
|
||||
|
||||
set(FMT_LIB_DIR "lib" CACHE STRING
|
||||
"Installation directory for libraries, relative to ${CMAKE_INSTALL_PREFIX}.")
|
||||
install(TARGETS cppformat DESTINATION ${FMT_LIB_DIR})
|
||||
install(FILES format.h DESTINATION include/cppformat)
|
||||
|
||||
# copy the header into the build directory to mimic the installed tree
|
||||
configure_file("format.h" "cppformat/format.h" COPYONLY)
|
||||
# add the include directories for both build and install tree
|
||||
target_include_directories(
|
||||
cppformat PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
# 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/cppformatConfig.cmake.in"
|
||||
"${project_config}"
|
||||
INSTALL_DESTINATION "${config_install_dir}"
|
||||
)
|
||||
export(TARGETS cppformat 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 format.h DESTINATION "include/cppformat")
|
||||
endif ()
|
||||
|
4
support/cmake/cppformatConfig.cmake.in
Normal file
4
support/cmake/cppformatConfig.cmake.in
Normal file
@ -0,0 +1,4 @@
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake")
|
||||
check_required_components("cppformat")
|
@ -10,12 +10,6 @@ function (target_link_cppformat target)
|
||||
endif ()
|
||||
endfunction ()
|
||||
|
||||
function (fmt_target_include_directories)
|
||||
if (CMAKE_MAJOR_VERSION VERSION_GREATER 2.8.10)
|
||||
target_include_directories(${ARGN})
|
||||
endif ()
|
||||
endfunction ()
|
||||
|
||||
# We compile Google Test ourselves instead of using pre-compiled libraries.
|
||||
# See the Google Test FAQ "Why is it not recommended to install a
|
||||
# pre-compiled copy of Google Test (for example, into /usr/local)?"
|
||||
@ -24,7 +18,7 @@ endfunction ()
|
||||
add_library(gmock STATIC
|
||||
${FMT_GMOCK_DIR}/gmock-gtest-all.cc ${FMT_GMOCK_DIR}/gmock/gmock.h
|
||||
${FMT_GMOCK_DIR}/gtest/gtest.h ${FMT_GMOCK_DIR}/gtest/gtest-spi.h)
|
||||
fmt_target_include_directories(gmock INTERFACE ${FMT_GMOCK_DIR})
|
||||
target_include_directories(gmock INTERFACE ${FMT_GMOCK_DIR})
|
||||
find_package(Threads)
|
||||
if (Threads_FOUND)
|
||||
target_link_libraries(gmock ${CMAKE_THREAD_LIBS_INIT})
|
||||
@ -43,7 +37,7 @@ check_cxx_source_compiles("
|
||||
check_cxx_source_compiles("
|
||||
#include <initializer_list>
|
||||
int main() {}" FMT_INITIALIZER_LIST)
|
||||
|
||||
|
||||
if (NOT FMT_VARIADIC_TEMPLATES OR NOT FMT_INITIALIZER_LIST)
|
||||
add_definitions(-DGTEST_LANG_CXX11=0)
|
||||
endif ()
|
||||
|
Loading…
x
Reference in New Issue
Block a user