Skip to content

Commit cc63c0d

Browse files
Refactored CMake files, added Doxygen gen CMake.
1 parent 2fb6aba commit cc63c0d

File tree

7 files changed

+115
-113
lines changed

7 files changed

+115
-113
lines changed

CMakeLists.txt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,29 @@ cmake_minimum_required ( VERSION 3.8 )
1111

1212
option ( CHOPS_NET_IP_OPT_BUILD_TESTS "Build and perform chops-net-ip tests" ON )
1313
option ( CHOPS_NET_IP_OPT_BUILD_EXAMPLES "Build and perform chops-net-ip examples" ON )
14+
option ( CHOPS_NET_IP_OPT_BUILD_DOCS "Build doxygen documentation" OFF )
15+
16+
set ( OPTIONS "" )
17+
set ( DEFINITIONS "" )
1418

1519
project ( chops-net-ip VERSION 1.0 LANGUAGES CXX )
1620

1721
set ( package_name "chops-net-ip" )
1822

1923
set ( include_source_dir "${CMAKE_SOURCE_DIR}/include" )
24+
set ( utility_rack_dir "${CMAKE_SOURCE_DIR}/../utility-rack" )
25+
set ( utility_rack_include_source_dir "${utility_rack_dir}/include" )
26+
set ( third_party_include_source_dir "${utility_rack_dir}/third_party" )
27+
set ( cmake_include_dir "${CMAKE_SOURCE_DIR}/cmake" )
28+
set ( cmake_all_repos_include_dir "${utility_rack_dir}/cmake/all_repos" )
29+
2030

2131
# Interface library:
2232

2333
add_library ( ${package_name} INTERFACE )
2434

2535
target_include_directories ( ${package_name} INTERFACE ${include_source_dir} )
36+
target_include_directories ( ${package_name} INTERFACE ${third_party_include_source_dir} )
2637
target_compile_features ( ${package_name} INTERFACE cxx_std_17)
2738

2839
if ( CHOPS_NET_IP_OPT_BUILD_TESTS )
@@ -31,9 +42,12 @@ if ( CHOPS_NET_IP_OPT_BUILD_TESTS )
3142
endif()
3243

3344
if ( CHOPS_NET_IP_OPT_BUILD_EXAMPLES )
34-
enable_testing()
3545
add_subdirectory ( example )
3646
endif()
3747

48+
if ( CHOPS_NET_IP_OPT_BUILD_DOCS )
49+
add_subdirectory ( doc )
50+
endif()
51+
3852
# end of file
3953

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Copyright 2020 by Cliff Green
2+
#
3+
# https://github.com/connectivecpp/utility-rack
4+
#
5+
# Distributed under the Boost Software License, Version 1.0.
6+
# (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7+
8+
# Still learning find_package and related ways to bring in third party dependent include directories,
9+
# so don't judge, instead please help.
10+
11+
set ( catch2_include_dir "${CMAKE_SOURCE_DIR}/../Catch2/single_include" )
12+
if ( NOT $ENV{CATCH2_INCLUDE_DIR} STREQUAL "" )
13+
set ( catch2_include_dir $ENV{CATCH2_INCLUDE_DIR}} )
14+
endif()
15+
set ( asio_include_dir "${CMAKE_SOURCE_DIR}/../asio/asio/include" )
16+
if ( NOT $ENV{ASIO_INCLUDE_DIR} STREQUAL "" )
17+
set ( asio_include_dir $ENV{ASIO_INCLUDE_DIR}} )
18+
endif()
19+
20+
function ( add_target_dependencies target )
21+
# find_package ( Catch2 REQUIRED )
22+
# target_include_directories ( ${target} PRIVATE ${Catch2_INCLUDE_DIRS} )
23+
target_include_directories ( ${target} PRIVATE ${catch2_include_dir} )
24+
# find_package ( asio REQUIRED )
25+
# target_include_directories ( ${target} PRIVATE ${asio_INCLUDE_DIRS} )
26+
target_include_directories ( ${target} PRIVATE ${asio_include_dir} )
27+
endfunction()
28+
29+
# end of file
30+

cmake/header_dirs_var.cmake

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Copyright 2020 by Cliff Green
2+
#
3+
# https://github.com/connectivecpp/utility-rack
4+
#
5+
# Distributed under the Boost Software License, Version 1.0.
6+
# (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7+
8+
set ( header_dirs
9+
"${include_source_dir}"
10+
"${utility_rack_include_source_dir}"
11+
"${third_party_include_source_dir}"
12+
)
13+
14+
# end of file
15+

doc/CMakeLists.txt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Copyright 2020 by Cliff Green
2+
#
3+
# https://github.com/connectivecpp/chops-net-ip
4+
#
5+
# Distributed under the Boost Software License, Version 1.0.
6+
# (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7+
8+
cmake_minimum_required ( VERSION 3.9 )
9+
10+
project ( chops-net-ip-doc VERSION 1.0 LANGUAGES CXX )
11+
12+
find_package ( Doxygen
13+
OPTIONAL_COMPONENTS dot mscgen dia
14+
)
15+
16+
if (DOXYGEN_FOUND)
17+
set ( DOXYGEN_PROJECT_NAME "Chops Net IP API Reference" )
18+
set ( DOXYGEN_PROJECT_BRIEF "Documentation of the classes and functions residing in Chops Net IP" )
19+
set ( DOXYGEN_EXCLUDE_PATTERNS */detail/* )
20+
doxygen_add_docs ( docs
21+
include
22+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
23+
COMMENT "Document generation command"
24+
)
25+
26+
else (DOXYGEN_FOUND)
27+
message("Doxygen needs to be installed to generate the doxygen documentation")
28+
endif (DOXYGEN_FOUND)
29+
30+
31+
32+
# end of file
33+

doc/html/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Chops Net IP Doxygen Pages
2+
3+
This directory contains HTML pages generated by Doxygen. The content is extracted from the source code.

example/CMakeLists.txt

Lines changed: 8 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2019 by Cliff Green
1+
# Copyright 2019-2020 by Cliff Green
22
#
33
# https://github.com/connectivecpp/chops-net-ip
44
#
@@ -11,6 +11,8 @@ project ( chops-net-ip-example VERSION 1.0 LANGUAGES CXX )
1111

1212
set ( example_source_dir "${CMAKE_SOURCE_DIR}/example" )
1313

14+
include ( "${cmake_include_dir}/header_dirs_var.cmake" )
15+
1416
set ( example_sources
1517
"${example_source_dir}/local_echo_demo.cpp"
1618
"${example_source_dir}/chat_server_demo.cpp"
@@ -20,57 +22,15 @@ set ( example_sources
2022
"${example_source_dir}/udp_broadcast_demo.cpp"
2123
"${example_source_dir}/udp_receiver_demo.cpp" )
2224

23-
set ( OPTIONS "" )
24-
set ( DEFINITIONS "" )
25-
26-
set ( header_dirs
27-
"${include_source_dir}"
28-
# "${test_include_dir}"
29-
)
30-
31-
# Still learning find_package and related ways to bring in third party dependent include directories,
32-
# so don't judge, instead please help.
33-
34-
set ( utility_rack_include_dir
35-
"${CMAKE_SOURCE_DIR}/../utility-rack/include"
36-
"${CMAKE_SOURCE_DIR}/../utility-rack/third_party"
37-
)
38-
if ( NOT $ENV{UTILITY_RACK_INCLUDE_DIR} STREQUAL "" )
39-
set ( utility_rack_include_dir $ENV{UTILITY_RACK_INCLUDE_DIR}} )
40-
endif()
41-
set ( asio_include_dir "${CMAKE_SOURCE_DIR}/../asio/asio/include" )
42-
if ( NOT $ENV{ASIO_INCLUDE_DIR} STREQUAL "" )
43-
set ( asio_include_dir $ENV{ASIO_INCLUDE_DIR}} )
44-
endif()
45-
46-
function ( add_target_dependencies target )
47-
# find_package ( utility-rack REQUIRED )
48-
# target_include_directories ( ${target} PRIVATE ${utility-rack_INCLUDE_DIRS} )
49-
target_include_directories ( ${target} PRIVATE ${utility_rack_include_dir} )
50-
# find_package ( asio REQUIRED )
51-
# target_include_directories ( ${target} PRIVATE ${asio_INCLUDE_DIRS} )
52-
target_include_directories ( ${target} PRIVATE ${asio_include_dir} )
53-
endfunction()
54-
55-
function ( add_target_info target )
56-
target_compile_features ( ${target} PRIVATE cxx_std_17 )
57-
target_compile_options ( ${target} PRIVATE ${OPTIONS} )
58-
target_compile_definitions ( ${target} PRIVATE ${DEFINITIONS} )
59-
target_include_directories ( ${target} PRIVATE ${header_dirs} )
60-
add_target_dependencies ( ${target} )
61-
endfunction()
25+
include ( "${cmake_include_dir}/add_target_dependencies.cmake" )
6226

63-
function ( make_exe target src )
64-
add_executable ( ${target} ${src} )
65-
add_target_info ( ${target} )
66-
target_link_libraries ( ${target} PRIVATE pthread )
67-
message ( "Example executable to create: ${target}" )
68-
endfunction()
27+
include ( "${cmake_all_repos_include_dir}/add_target_info_func.cmake" )
28+
include ( "${cmake_all_repos_include_dir}/target_exe_func.cmake" )
6929

7030
foreach ( example_src IN LISTS example_sources )
7131
get_filename_component ( targ ${example_src} NAME_WE )
72-
message ( "Calling make_exe for: ${targ}" )
73-
make_exe ( ${targ} ${example_src} )
32+
message ( "Calling target_exe for: ${targ}" )
33+
target_exe ( ${targ} ${example_src} )
7434
endforeach()
7535

7636
# end of file

test/CMakeLists.txt

Lines changed: 11 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ cmake_minimum_required ( VERSION 3.8 )
99

1010
project ( chops-net-ip-test VERSION 1.0 LANGUAGES CXX )
1111

12-
set ( test_source_dir "${CMAKE_SOURCE_DIR}/test" )
13-
set ( test_main_src "${test_source_dir}/main_test.cpp" )
14-
set ( test_include_dir "${test_source_dir}" )
15-
set ( tester_suffix "_runner" )
16-
set ( main_test_lib_name "main_test_lib" )
12+
include ( "${cmake_all_repos_include_dir}/unit_test_vars.cmake" )
13+
14+
include ( "${cmake_include_dir}/header_dirs_var.cmake" )
15+
# the following will allow shared_test headers to be picked up by test code
16+
set (header_dirs ${header_dirs} "${CMAKE_SOURCE_DIR}/test" )
1717

1818
set ( test_sources
1919
"${test_source_dir}/shared_test/mock_classes_test.cpp"
@@ -41,71 +41,18 @@ set ( test_sources
4141
"${test_source_dir}/net_ip/tcp_connector_timeout_test.cpp"
4242
"${test_source_dir}/net_ip/net_ip_test.cpp" )
4343

44-
set ( OPTIONS "" )
45-
set ( DEFINITIONS "" )
46-
47-
set ( header_dirs
48-
"${include_source_dir}"
49-
"${test_include_dir}"
50-
)
51-
52-
# Still learning find_package and related ways to bring in third party dependent include directories,
53-
# so don't judge, instead please help.
54-
55-
set ( catch2_include_dir "${CMAKE_SOURCE_DIR}/../Catch2/single_include" )
56-
if ( NOT $ENV{CATCH2_INCLUDE_DIR} STREQUAL "" )
57-
set ( catch2_include_dir $ENV{CATCH2_INCLUDE_DIR}} )
58-
endif()
59-
set ( utility_rack_include_dir
60-
"${CMAKE_SOURCE_DIR}/../utility-rack/include"
61-
"${CMAKE_SOURCE_DIR}/../utility-rack/third_party"
62-
)
63-
if ( NOT $ENV{UTILITY_RACK_INCLUDE_DIR} STREQUAL "" )
64-
set ( utility_rack_include_dir $ENV{UTILITY_RACK_INCLUDE_DIR}} )
65-
endif()
66-
set ( asio_include_dir "${CMAKE_SOURCE_DIR}/../asio/asio/include" )
67-
if ( NOT $ENV{ASIO_INCLUDE_DIR} STREQUAL "" )
68-
set ( asio_include_dir $ENV{ASIO_INCLUDE_DIR}} )
69-
endif()
70-
71-
function ( add_target_dependencies target )
72-
# find_package ( utility-rack REQUIRED )
73-
# target_include_directories ( ${target} PRIVATE ${utility-rack_INCLUDE_DIRS} )
74-
target_include_directories ( ${target} PRIVATE ${utility_rack_include_dir} )
75-
# find_package ( Catch2 REQUIRED )
76-
# target_include_directories ( ${target} PRIVATE ${Catch2_INCLUDE_DIRS} )
77-
target_include_directories ( ${target} PRIVATE ${catch2_include_dir} )
78-
# find_package ( asio REQUIRED )
79-
# target_include_directories ( ${target} PRIVATE ${asio_INCLUDE_DIRS} )
80-
target_include_directories ( ${target} PRIVATE ${asio_include_dir} )
81-
endfunction()
82-
83-
function ( add_target_info target )
84-
target_compile_features ( ${target} PRIVATE cxx_std_17 )
85-
target_compile_options ( ${target} PRIVATE ${OPTIONS} )
86-
target_compile_definitions ( ${target} PRIVATE ${DEFINITIONS} )
87-
target_include_directories ( ${target} PRIVATE ${header_dirs} )
88-
add_target_dependencies ( ${target} )
89-
endfunction()
90-
91-
add_library ( ${main_test_lib_name} STATIC ${test_main_src} )
92-
add_target_info ( ${main_test_lib_name} )
44+
include ( "${cmake_include_dir}/add_target_dependencies.cmake" )
9345

94-
function ( make_exe target src )
95-
add_executable ( ${target} ${src} )
96-
add_target_info ( ${target} )
97-
target_link_libraries ( ${target} PRIVATE pthread )
98-
target_link_libraries ( ${target} PRIVATE ${main_test_lib_name} )
99-
message ( "Test executable to create: ${target}" )
100-
add_test ( NAME ${target}${tester_suffix} COMMAND ${target} )
101-
endfunction()
46+
include ( "${cmake_all_repos_include_dir}/add_target_info_func.cmake" )
47+
include ( "${cmake_all_repos_include_dir}/unit_test_main_lib.cmake" )
48+
include ( "${cmake_all_repos_include_dir}/target_exe_func.cmake" )
10249

10350
enable_testing()
10451

10552
foreach ( test_src IN LISTS test_sources )
10653
get_filename_component ( targ ${test_src} NAME_WE )
107-
message ( "Calling make_exe for: ${targ}" )
108-
make_exe ( ${targ} ${test_src} )
54+
message ( "Calling unit_test_target_exe for: ${targ}" )
55+
unit_test_target_exe ( ${targ} ${test_src} )
10956
endforeach()
11057

11158
# end of file

0 commit comments

Comments
 (0)