Skip to content

Commit f710280

Browse files
committed
- avoid unused-value compiler warnings
- added global header - fix cmake config
1 parent 9da3f90 commit f710280

File tree

5 files changed

+79
-14
lines changed

5 files changed

+79
-14
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ _deps
1313
lib/*.a
1414
bin/
1515
patterns.cbp
16+
patterns*.cmake
1617
test/gtest

CMakeLists.txt

Lines changed: 49 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,59 @@
1-
cmake_minimum_required(VERSION 3.9)
2-
project(patterns)
3-
set(CMAKE_ROOT_)
1+
cmake_minimum_required(VERSION 3.12.4)
2+
project("patterns"
3+
VERSION 0.1.0
4+
DESCRIPTION "A header only c++17 library with GoF design patterns"
5+
HOMEPAGE_URL "https://github.com/svdev/design-patterns-cpp17"
6+
LANGUAGES CXX)
47

58
set(CMAKE_CXX_STANDARD 17)
69
set(CMAKE_CXX_EXTENSIONS OFF)
710
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
811
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
912
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
1013

14+
if(NOT CMAKE_BUILD_TYPE)
15+
set(CMAKE_BUILD_TYPE "Release" FORCE)
16+
endif(NOT CMAKE_BUILD_TYPE)
17+
18+
add_library(${PROJECT_NAME} INTERFACE)
19+
target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17)
20+
target_include_directories(${PROJECT_NAME} INTERFACE
21+
$<BUILD_INTERFACE:${${PROJECT_NAME}_SOURCE_DIR}/include>
22+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
23+
24+
set(CMAKE_ROOT)
25+
install(TARGETS ${PROJECT_NAME}
26+
EXPORT ${PROJECT_NAME}_Targets
27+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
28+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
29+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
30+
31+
include(CMakePackageConfigHelpers)
32+
write_basic_package_version_file("${PROJECT_NAME}ConfigVersion.cmake"
33+
VERSION ${PROJECT_VERSION}
34+
COMPATIBILITY SameMajorVersion)
35+
36+
install(EXPORT ${PROJECT_NAME}_Targets
37+
FILE ${PROJECT_NAME}Targets.cmake
38+
NAMESPACE ${PROJECT_NAME}::
39+
DESTINATION ${CMAKE_ROOT}/Modules/${PROJECT_NAME})
40+
41+
install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
42+
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
43+
DESTINATION ${CMAKE_ROOT}/Modules/${PROJECT_NAME})
44+
45+
file(GLOB PATTERN_HEADERS
46+
${PROJECT_SOURCE_DIR}/include/**/*.hpp
47+
${PROJECT_SOURCE_DIR}/include/*.hpp)
48+
49+
foreach(FILE ${PATTERN_HEADERS})
50+
get_filename_component(DIR ${FILE} DIRECTORY)
51+
file(RELATIVE_PATH REL ${PROJECT_SOURCE_DIR}/include ${DIR})
52+
install(FILES ${FILE} DESTINATION include/${PROJECT_NAME}/${REL})
53+
endforeach()
54+
1155
include_directories(include)
1256

13-
add_subdirectory(lib/googletest)
57+
# EXCLUDE_FROM_ALL disables install targets for googletest subdirectory.
58+
add_subdirectory(lib/googletest EXCLUDE_FROM_ALL)
1459
add_subdirectory(test)
15-
16-
option(USE_CLANG "Build using Clang++" ON)
17-
if (USE_CLANG)
18-
set(CMAKE_CXX_COMPILER clang++)
19-
endif(USE_CLANG)

README.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,28 @@ Design Patterns Headers-only Library for C++17
77

88
git clone --recurse-submodules http://github.com/svdev/design-patterns-cpp17
99
cd design-patterns-cpp17
10-
cmake -G "Unix Makefiles" .
11-
make
12-
13-
10+
cmake -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -G "Unix Makefiles" .
11+
make -j8
12+
1413
## Test
1514

1615
make check
1716

1817

18+
## Install
19+
20+
sudo make install
21+
22+
## Usage
23+
24+
project("my-project")
25+
26+
find_package(patterns CONFIG REQUIRED)
27+
28+
add_executable(${PROJECT_NAME} src/main.cc)
29+
target_link_libraries(${PROJECT_NAME} patterns::patterns)
30+
31+
1932
## Author
2033

2134
svdev - http://github.com/svdev

include/creational/singleton.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class singleton {
4040
*/
4141
// std::cout << "singleton Constructor" << std::endl;
4242
static bool static_init = []() -> bool {
43-
singleton_container<T>::instance;
43+
(void)singleton_container<T>::instance;
4444
// std::cout << "singleton Initialized" << std::endl;
4545
return true;
4646
}();

include/patterns.hpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#ifndef DESIGN_PATTERNS_HPP
2+
#define DESIGN_PATTERNS_HPP
3+
4+
#include "behavioral/observer.hpp"
5+
#include "behavioral/visitor.hpp"
6+
7+
#include "creational/singleton.hpp"
8+
#include "creational/factory.hpp"
9+
10+
11+
#endif //DESIGN_PATTERNS_HPP

0 commit comments

Comments
 (0)