@@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.19 FATAL_ERROR)
44
55# Note: update this to your new project's name and version
66project (
7- ThreadPool
7+ thread-pool
88 VERSION 0.6.0
99 LANGUAGES CXX
1010)
@@ -56,21 +56,17 @@ if(PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR)
5656 )
5757endif ()
5858
59- # ---- Add dependencies via CPM ----
6059# see https://github.com/TheLartians/CPM.cmake for more info
6160include (cmake/CPM.cmake)
6261
63- # PackageProject.cmake will be used to make our target installable
64- CPMAddPackage(
"gh:TheLartians/[email protected] " )
65-
66- # ---- Add source files ----
62+ # add source files
6763file (GLOB_RECURSE headers CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR} /include/*.h" )
6864
6965find_package (Threads REQUIRED)
7066
7167# ---- Create library ----
7268add_library (${PROJECT_NAME} INTERFACE )
73- add_library (dp::thread-pool ALIAS ${PROJECT_NAME} )
69+ add_library (dp::${PROJECT_NAME} ALIAS ${PROJECT_NAME} )
7470
7571target_link_libraries (${PROJECT_NAME} INTERFACE Threads::Threads)
7672
@@ -83,31 +79,62 @@ endif()
8379# being a cross-platform target, we enforce standards conformance on MSVC
8480target_compile_options (${PROJECT_NAME} INTERFACE $<$<COMPILE_LANG_AND_ID:CXX,MSVC >:/permissive->)
8581
86- target_include_directories (
87- ${PROJECT_NAME} INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR} /include >
88- $<INSTALL_INTERFACE:include /${PROJECT_NAME} -${PROJECT_VERSION} >
89- )
90-
91- # ---- Create an installable target ----
92- # this allows users to install and find the library via `find_package()`.
93-
9482# the location where the project's version header will be placed should match the project's regular
9583# header paths here we get the root folder of the include directory but getting the directory name
9684# from one of the headers paths
9785list (GET headers 0 first_header)
9886get_filename_component (include_dir_path ${first_header} DIRECTORY )
9987get_filename_component (include_dir_name ${include_dir_path} NAME )
100- string (TOLOWER ${include_dir_name} /version .h VERSION_HEADER_LOCATION)
101- packageProject(
102- NAME ${PROJECT_NAME}
103- VERSION ${PROJECT_VERSION}
104- NAMESPACE ${PROJECT_NAME}
105- BINARY_DIR ${PROJECT_BINARY_DIR}
106- INCLUDE_DIR ${PROJECT_SOURCE_DIR} /include
107- INCLUDE_DESTINATION include /${PROJECT_NAME} -${PROJECT_VERSION}
108- VERSION_HEADER "${VERSION_HEADER_LOCATION} "
109- COMPATIBILITY SameMajorVersion
110- DEPENDENCIES "Threads" ARCH_INDEPENDENT YES
88+
89+ configure_file (
90+ ${PROJECT_SOURCE_DIR} /cmake/version .h.in ${PROJECT_BINARY_DIR} /include /thread_pool/version .h
91+ @ONLY
92+ )
93+
94+ target_include_directories (
95+ ${PROJECT_NAME}
96+ INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR} /include >
97+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR} /include >
98+ $<INSTALL_INTERFACE:include /${PROJECT_NAME} -${PROJECT_VERSION} >
99+ )
100+
101+ # ---- Create an installable target ----
102+ # this allows users to install and find the library via `find_package()`.
103+
104+ include (CMakePackageConfigHelpers)
105+ include (GNUInstallDirs)
106+
107+ # Installation help
108+ configure_package_config_file(
109+ "${PROJECT_SOURCE_DIR} /cmake/${PROJECT_NAME} -config.cmake.in"
110+ "${PROJECT_BINARY_DIR} /${PROJECT_NAME} -config.cmake"
111+ INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} -${PROJECT_VERSION} "
112+ )
113+
114+ write_basic_package_version_file(
115+ "${PROJECT_BINARY_DIR} /${PROJECT_NAME} -config-version.cmake" COMPATIBILITY SameMajorVersion
116+ ARCH_INDEPENDENT
117+ )
118+
119+ install (TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME} -targets)
120+
121+ install (
122+ EXPORT ${PROJECT_NAME} -targets
123+ NAMESPACE dp::
124+ DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} -${PROJECT_VERSION} "
125+ FILE "${PROJECT_NAME} -targets.cmake"
126+ )
127+
128+ install (FILES "${PROJECT_BINARY_DIR} /${PROJECT_NAME} -config.cmake"
129+ "${PROJECT_BINARY_DIR} /${PROJECT_NAME} -config-version.cmake"
130+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} -${PROJECT_VERSION}
131+ )
132+
133+ install (FILES ${headers}
134+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /${PROJECT_NAME} -${PROJECT_VERSION} /thread_pool
135+ )
136+ install (FILES ${PROJECT_BINARY_DIR} /include /thread_pool/version .h
137+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /${PROJECT_NAME} -${PROJECT_VERSION} /thread_pool
111138)
112139
113140option (TP_BUILD_TESTS "Turn on to build unit tests." ON )
0 commit comments