Skip to content

Commit 1fec0c7

Browse files
committed
add pc-file and installing part
1 parent 89b41c0 commit 1fec0c7

3 files changed

Lines changed: 81 additions & 9 deletions

File tree

CMakeLists.txt

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,45 @@ cmake_minimum_required(VERSION 3.15)
22

33
project(
44
ProcessInfo
5-
VERSION 0.1
5+
VERSION 1.0.0
66
LANGUAGES CXX)
77

88
set(CMAKE_CXX_STANDARD 20)
99
set(CMAKE_CXX_EXTENSIONS OFF)
1010
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1111

12-
include_directories(src)
13-
link_directories(${CMAKE_BINARY_DIR}/src)
12+
include(GNUInstallDirs)
13+
14+
option(PROCESSINFO_PKGCONFIG "Build pkg-config .pc file for ProcessInfo library." OFF)
15+
option(PROCESSINFO_EXAMPLES "Build examples for ProcessInfo library." OFF)
16+
17+
set(INCLUDE_INSTALL_DIR
18+
"${CMAKE_INSTALL_INCLUDEDIR}/ProcessInfo"
19+
CACHE PATH "The directory relative to CMAKE_INSTALL_PREFIX where ProcessInfo header files are installed")
20+
21+
22+
set(PKGCONFIG_INSTALL_DIR
23+
"${CMAKE_INSTALL_DATADIR}/pkgconfig"
24+
CACHE PATH "The directory relative to CMAKE_INSTALL_PREFIX where processinfo.pc is installed"
25+
)
26+
27+
foreach(var INCLUDE_INSTALL_DIR CMAKEPACKAGE_INSTALL_DIR PKGCONFIG_INSTALL_DIR)
28+
# If an absolute path is specified, make it relative to "{CMAKE_INSTALL_PREFIX}".
29+
if(IS_ABSOLUTE "${${var}}")
30+
file(RELATIVE_PATH "${var}" "${CMAKE_INSTALL_PREFIX}" "${${var}}")
31+
endif()
32+
endforeach()
1433

1534
add_subdirectory(src)
16-
add_subdirectory(examples)
35+
36+
if(PROCESSINFO_EXAMPLES)
37+
include_directories(src)
38+
link_directories(${CMAKE_BINARY_DIR}/src)
39+
add_subdirectory(examples)
40+
endif()
41+
42+
if(COROUTINECLASSES_PKGCONFIG)
43+
configure_file(processinfo.pc.in processinfo.pc @ONLY)
44+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/processinfo.pc
45+
DESTINATION ${PKGCONFIG_INSTALL_DIR})
46+
endif()

processinfo.pc.in

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
prefix=@CMAKE_INSTALL_PREFIX@
2+
exec_prefix=${prefix}
3+
4+
Name: ProcessInfo
5+
Description: A platform-independent library for reading process data.
6+
Version: 1.0.0
7+
Libs: -L${libdir} -lProcessInfo
8+
Cflags: -I${prefix}/@INCLUDE_INSTALL_DIR@

src/CMakeLists.txt

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,44 @@
1-
SET(LIBRARY_SRC_FILES
2-
PIAbstractProcessInfoReader.cpp)
1+
#declare source and header files
2+
set( SOURCE_FILES
3+
PIAbstractProcessInfoReader.cpp
4+
)
5+
6+
set( HEADER_FILES
7+
PIAbstractProcessInfoReader.h
8+
PIProcessInfo.h
9+
PIProcessInfoReader.h
10+
)
11+
12+
set( HEADER_FILES_PRIVATE
13+
14+
)
315

416
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
5-
list(APPEND LIBRARY_SRC_FILES PILinuxProcessInfoReader.cpp)
17+
list(APPEND HEADER_FILES PILinuxProcessInfoReader.h)
18+
list(APPEND SOURCE_FILES PILinuxProcessInfoReader.cpp)
619
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
7-
list(APPEND LIBRARY_SRC_FILES PIWindowsProcessInfoReader.cpp)
20+
list(APPEND HEADER_FILES PIWindowsProcessInfoReader.h)
21+
list(APPEND HEADER_FILES_PRIVATE WindowsNtApi.h)
22+
list(APPEND SOURCE_FILES PIWindowsProcessInfoReader.cpp)
823
endif()
924

10-
add_library(ProcessInfo STATIC ${LIBRARY_SRC_FILES})
25+
#declare library target
26+
add_library(ProcessInfo STATIC)
27+
28+
#set target sources
29+
target_sources(ProcessInfo
30+
PRIVATE ${SOURCE_FILES} ${HEADER_FILES_PRIVATE}
31+
PUBLIC ${HEADER_FILES}
32+
)
33+
34+
#set target includes
35+
target_include_directories(ProcessInfo PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
36+
37+
#install target
38+
install(
39+
TARGETS ProcessInfo
40+
EXPORT ProcessInfo
41+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
42+
)
43+
44+
install(FILES ${HEADER_FILES} DESTINATION ${INCLUDE_INSTALL_DIR})

0 commit comments

Comments
 (0)