mirror of
https://github.com/boostorg/predef.git
synced 2025-07-30 19:57:14 +02:00
Add cmake files
This commit is contained in:
8
CMakeLists.txt
Normal file
8
CMakeLists.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
|
include(cmake/BoostVersion.cmake)
|
||||||
|
set(BOOST_PROJECT_NAME predef)
|
||||||
|
|
||||||
|
project(boost_${BOOST_PROJECT_NAME} VERSION ${BOOST_VERSION} LANGUAGES CXX)
|
||||||
|
|
||||||
|
include(cmake/default.cmake)
|
1
cmake/BoostVersion.cmake
Normal file
1
cmake/BoostVersion.cmake
Normal file
@ -0,0 +1 @@
|
|||||||
|
set(BOOST_VERSION 1.65.0)
|
4
cmake/Jamfile
Normal file
4
cmake/Jamfile
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Update cmake files
|
||||||
|
|
||||||
|
install BoostVersion_ : ../../../BoostVersion.cmake : <location>. ;
|
||||||
|
install default_ : ../../../cmake/default.cmake : <location>. ;
|
103
cmake/default.cmake
Normal file
103
cmake/default.cmake
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
#
|
||||||
|
# Default CMakeLists.txt contents for a Boost library
|
||||||
|
#
|
||||||
|
|
||||||
|
# sources.cmake defines ${PROJECT_NAME}_SOURCES
|
||||||
|
include(cmake/sources.cmake)
|
||||||
|
|
||||||
|
if("${${PROJECT_NAME}_SOURCES}" STREQUAL "")
|
||||||
|
|
||||||
|
# if no sources, this is a header-only library
|
||||||
|
add_library(boost_${BOOST_PROJECT_NAME} INTERFACE)
|
||||||
|
|
||||||
|
# include directory
|
||||||
|
target_include_directories(${PROJECT_NAME} INTERFACE
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||||
|
$<INSTALL_INTERFACE:include>
|
||||||
|
)
|
||||||
|
|
||||||
|
else()
|
||||||
|
|
||||||
|
# a library that requires building
|
||||||
|
add_library(${PROJECT_NAME} ${${PROJECT_NAME}_SOURCES})
|
||||||
|
|
||||||
|
# include directory
|
||||||
|
target_include_directories(${PROJECT_NAME} PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||||
|
$<INSTALL_INTERFACE:include>
|
||||||
|
)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# add namespaced alias
|
||||||
|
add_library(boost::${BOOST_PROJECT_NAME} ALIAS ${PROJECT_NAME})
|
||||||
|
|
||||||
|
# set imported target name to the unqualified name, it will be namespaced
|
||||||
|
set_property(TARGET ${PROJECT_NAME} PROPERTY EXPORT_NAME ${BOOST_PROJECT_NAME})
|
||||||
|
|
||||||
|
# link to dependencies
|
||||||
|
include(CMakeFindDependencyMacro)
|
||||||
|
|
||||||
|
function(boost_declare_dependency package type target)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME} ${type} ${target})
|
||||||
|
|
||||||
|
if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
find_dependency(${package} ${PROJECT_VERSION} EXACT)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
include(cmake/dependencies.cmake)
|
||||||
|
|
||||||
|
# target installation
|
||||||
|
install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-targets
|
||||||
|
RUNTIME DESTINATION bin
|
||||||
|
LIBRARY DESTINATION lib
|
||||||
|
ARCHIVE DESTINATION lib
|
||||||
|
INCLUDES DESTINATION include
|
||||||
|
)
|
||||||
|
|
||||||
|
# header installation
|
||||||
|
install(DIRECTORY include/ DESTINATION include)
|
||||||
|
|
||||||
|
# export target info to ${PROJECT_NAME}-targets.cmake, used by -config.cmake
|
||||||
|
install(EXPORT ${PROJECT_NAME}-targets
|
||||||
|
FILE ${PROJECT_NAME}-targets.cmake
|
||||||
|
NAMESPACE boost::
|
||||||
|
DESTINATION lib/cmake/${PROJECT_NAME}-${PROJECT_VERSION}
|
||||||
|
)
|
||||||
|
|
||||||
|
# install -dependencies.cmake, used by -config.cmake
|
||||||
|
|
||||||
|
install(FILES cmake/dependencies.cmake
|
||||||
|
DESTINATION lib/cmake/${PROJECT_NAME}-${PROJECT_VERSION}
|
||||||
|
RENAME ${PROJECT_NAME}-dependencies.cmake
|
||||||
|
)
|
||||||
|
|
||||||
|
# write ${PROJECT_NAME}-config.cmake
|
||||||
|
file(WRITE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake" "
|
||||||
|
include(\${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}-targets.cmake)
|
||||||
|
include(CMakeFindDependencyMacro)
|
||||||
|
function(boost_declare_dependency package type target)
|
||||||
|
find_dependency(\${package} ${PROJECT_VERSION} EXACT)
|
||||||
|
endfunction()
|
||||||
|
include(\${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}-dependencies.cmake)
|
||||||
|
")
|
||||||
|
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
|
||||||
|
# write ${PROJECT_NAME}-config-version.cmake
|
||||||
|
write_basic_package_version_file("${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
|
||||||
|
VERSION ${PROJECT_VERSION}
|
||||||
|
COMPATIBILITY AnyNewerVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
# install -config, -config-version
|
||||||
|
install(FILES
|
||||||
|
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
|
||||||
|
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
|
||||||
|
DESTINATION lib/cmake/${PROJECT_NAME}-${PROJECT_VERSION}
|
||||||
|
)
|
0
cmake/dependencies.cmake
Normal file
0
cmake/dependencies.cmake
Normal file
0
cmake/sources.cmake
Normal file
0
cmake/sources.cmake
Normal file
Reference in New Issue
Block a user