summarylogtreecommitdiffstats
path: root/subprocess_fix_install.patch
blob: 76a79cfe2318f1011821c741248c7316c81a98dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
diff --git a/CMakeLists.txt b/CMakeLists.txt
index edf6c01..563186c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,11 +33,51 @@ if(MSVC)
     add_compile_options(-Zc:__cplusplus)
 endif()
 
+add_subdirectory(src/cpp subprocess)
 
+install(TARGETS ${PROJECT_NAME} EXPORT "${PROJECT_NAME}Targets")
 
+# Include CMakePackageConfigHelpers to assist with the config file creation
+include(CMakePackageConfigHelpers)
 
-add_subdirectory(src/cpp subprocess)
+# Configure the package config file
+configure_package_config_file(
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/subprocessConfig.cmake.in"
+    "${CMAKE_CURRENT_BINARY_DIR}/subprocessConfig.cmake"
+    INSTALL_DESTINATION lib/cmake/subprocess
+)
+
+# Configure the package version file
+write_basic_package_version_file(
+    "${CMAKE_CURRENT_BINARY_DIR}/subprocessConfigVersion.cmake"
+    VERSION ${PROJECT_VERSION}
+    COMPATIBILITY AnyNewerVersion
+)
+
+# Export target
+export(EXPORT "${PROJECT_NAME}Targets"
+    FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake"
+)
+
+# Install the library
+install(TARGETS subprocess
+        DESTINATION lib)
+
+# Install the header files
+install(DIRECTORY src/cpp/subprocess
+        DESTINATION include
+        FILES_MATCHING PATTERN "*.hpp")
+
+# Install the CMake config files
+install(FILES
+    "${CMAKE_CURRENT_BINARY_DIR}/subprocessConfig.cmake"
+    "${CMAKE_CURRENT_BINARY_DIR}/subprocessConfigVersion.cmake"
+    DESTINATION lib/cmake/subprocess
+)
+
+# Install target file
+install(EXPORT "${PROJECT_NAME}Targets" FILE "${PROJECT_NAME}Targets.cmake" DESTINATION "lib/cmake/${PROJECT_NAME}")
 
 # TODO testing
 enable_testing()
-add_subdirectory(test)
\ No newline at end of file
+add_subdirectory(test)
diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt
index daa0145..75f5087 100644
--- a/src/cpp/CMakeLists.txt
+++ b/src/cpp/CMakeLists.txt
@@ -3,8 +3,9 @@ file(GLOB src ./subprocess/*.cpp)
 find_package(Threads REQUIRED)
 
 add_library(subprocess ${src})
-target_include_directories(subprocess PUBLIC
-    ./
+target_include_directories(${PROJECT_NAME} PUBLIC
+    $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/cpp>
+    $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>
 )
 
 if(MSVC)
@@ -18,4 +19,4 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
     endif()
 endif()
 
-target_link_libraries(subprocess PUBLIC Threads::Threads)
\ No newline at end of file
+target_link_libraries(subprocess PUBLIC Threads::Threads)