Skip to content

Commit 215d8dd

Browse files
authored
Merge pull request #38 from borgmanJeremy/cmake_exports
Added Cmake exporting for easier consumption
2 parents 3c929be + 1d65012 commit 215d8dd

File tree

3 files changed

+62
-32
lines changed

3 files changed

+62
-32
lines changed

CMakeLists.txt

+1-10
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
cmake_minimum_required(VERSION 3.1.0)
2-
project(CppLinuxSerial)
3-
4-
add_definitions(-std=c++14)
5-
set(CMAKE_CXX_STANDARD 14)
6-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
7-
set(CMAKE_CXX_EXTENSIONS OFF)
2+
project(CppLinuxSerial VERSION 2.7.0)
83

94
option(BUILD_TESTS "If set to true, unit tests will be build as part of make all." TRUE)
105
if (BUILD_TESTS)
@@ -56,10 +51,6 @@ endif()
5651
#========================================= This Project ==========================================#
5752
#=================================================================================================#
5853

59-
# Now simply link your own targets against gtest, gmock,
60-
# etc. as appropriate
61-
include_directories(include)
62-
6354
add_subdirectory(src)
6455
if(BUILD_TESTS)
6556
add_subdirectory(test/unit)

src/CMakeLists.txt

+56-22
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,63 @@
11

2-
3-
file(GLOB_RECURSE CppLinuxSerial_SRC
4-
"*.cpp")
5-
6-
file(GLOB_RECURSE CppLinuxSerial_HEADERS
7-
"${CMAKE_SOURCE_DIR}/include/*.hpp")
8-
92
option(SERIAL_BUILD_SHARED_LIBS "Build CppLinuxSerial shared library" OFF)
103

114
if (SERIAL_BUILD_SHARED_LIBS)
12-
set(LibType SHARED)
5+
add_library(CppLinuxSerial SHARED)
136
else()
14-
set(LibType STATIC)
7+
add_library(CppLinuxSerial STATIC)
158
endif()
169

17-
add_library(CppLinuxSerial ${LibType} ${CppLinuxSerial_SRC} ${CppLinuxSerial_HEADERS})
18-
19-
20-
target_include_directories(CppLinuxSerial PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>"
21-
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}>")
22-
23-
# On Linux, "sudo make install" will typically copy the library
24-
# into the folder /usr/local/bin
25-
install(TARGETS CppLinuxSerial DESTINATION lib)
26-
27-
# On Linux, "sudo make install" will typically copy the
28-
# folder into /usr/local/include
29-
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../include/CppLinuxSerial DESTINATION include)
10+
add_library(CppLinuxSerial::CppLinuxSerial ALIAS CppLinuxSerial)
11+
12+
target_compile_features(CppLinuxSerial PRIVATE cxx_std_14)
13+
14+
target_sources(CppLinuxSerial
15+
PRIVATE
16+
SerialPort.cpp)
17+
18+
target_include_directories(
19+
CppLinuxSerial
20+
PUBLIC
21+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>"
22+
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}>"
23+
)
24+
25+
## Installing
26+
include(CMakePackageConfigHelpers)
27+
28+
install(
29+
TARGETS CppLinuxSerial
30+
EXPORT CppLinuxSerialTargets
31+
LIBRARY DESTINATION lib
32+
ARCHIVE DESTINATION lib
33+
INCLUDES DESTINATION include
34+
)
35+
36+
install(
37+
EXPORT CppLinuxSerialTargets
38+
FILE CppLinuxSerialTargets.cmake
39+
NAMESPACE CppLinuxSerial::
40+
DESTINATION lib/cmake/CppLinuxSerial
41+
)
42+
install(
43+
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../include/CppLinuxSerial
44+
DESTINATION include
45+
)
46+
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
47+
"${CMAKE_CURRENT_BINARY_DIR}/CppLinuxSerialConfig.cmake"
48+
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/CppLinuxSerial
49+
)
50+
51+
include(CMakePackageConfigHelpers)
52+
write_basic_package_version_file(
53+
CppLinuxSerialConfigVersion.cmake
54+
VERSION ${PACKAGE_VERSION}
55+
COMPATIBILITY AnyNewerVersion
56+
)
57+
58+
install(
59+
FILES
60+
"${CMAKE_CURRENT_BINARY_DIR}/CppLinuxSerialConfig.cmake"
61+
"${CMAKE_CURRENT_BINARY_DIR}/CppLinuxSerialConfigVersion.cmake"
62+
DESTINATION lib/cmake/CppLinuxSerial
63+
)

src/Config.cmake.in

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/CppLinuxSerialTargets.cmake")
4+
5+
check_required_components(CppLinuxSerial)

0 commit comments

Comments
 (0)