Skip to content

Commit 6810506

Browse files
authored
Merge pull request #3 from bemanproject/2-updates-for-cmake-and-project-structure
Updates for cmake and project structure to header only. Remove the src tree. Simplify the naming in examples. Require C++20 ranges in the header -- provide a user error on failure.
2 parents 2e76935 + f8e33f7 commit 6810506

File tree

10 files changed

+45
-72
lines changed

10 files changed

+45
-72
lines changed

.github/workflows/cookiecutter_test.yml

Lines changed: 0 additions & 19 deletions
This file was deleted.

CMakeLists.txt

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
22

3-
cmake_minimum_required(VERSION 3.25)
3+
cmake_minimum_required(VERSION 3.28...4.2)
44

55
project(
6-
beman.take_before # CMake Project Name, which is also the name of the top-level
7-
# targets (e.g., library, executable, etc.).
8-
DESCRIPTION "A Beman Library for take_before"
6+
beman.take_before
7+
DESCRIPTION "take_before_view"
98
LANGUAGES CXX
10-
VERSION 2.2.1
9+
VERSION 0.0.1
1110
)
1211

12+
# gersemi: off
13+
1314
# [CMAKE.SKIP_TESTS]
1415
option(
1516
BEMAN_TAKE_BEFORE_BUILD_TESTS
@@ -24,12 +25,28 @@ option(
2425
${PROJECT_IS_TOP_LEVEL}
2526
)
2627

27-
include(CTest)
2828

29-
add_subdirectory(src/beman/take_before)
29+
add_library(beman.take_before INTERFACE)
30+
target_sources(
31+
beman.take_before
32+
INTERFACE
33+
FILE_SET HEADERS
34+
BASE_DIRS include
35+
FILES include/beman/take_before/take_before.hpp
36+
)
37+
38+
add_library(beman::take_before ALIAS beman.take_before)
39+
set_target_properties(beman.take_before PROPERTIES VERIFY_INTERFACE_HEADER_SETS ON)
40+
41+
set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/infra/cmake)
42+
43+
44+
find_package(beman-install-library REQUIRED)
45+
beman_install_library(beman.take_before)
3046

3147
if(BEMAN_TAKE_BEFORE_BUILD_TESTS)
32-
add_subdirectory(tests/beman/take_before)
48+
enable_testing()
49+
add_subdirectory(tests/beman/take_before)
3350
endif()
3451

3552
if(BEMAN_TAKE_BEFORE_BUILD_EXAMPLES)

src/beman/take_before/beman.take_before-config.cmake.in renamed to beman.take_before-config.cmake.in

File renamed without changes.

examples/CMakeLists.txt

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,16 @@
11
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
22

3-
set(ALL_EXAMPLES take_before_direct_usage)
4-
5-
# Example `take_before_as_default_projection` need ranges support:
6-
include(CheckCXXSymbolExists)
7-
check_cxx_symbol_exists(__cpp_lib_ranges "ranges" HAS_RANGES)
3+
# gersemi: off
84

9-
if(HAS_RANGES)
10-
list(APPEND ALL_EXAMPLES take_before_as_default_projection)
11-
else()
12-
message(
13-
WARNING
14-
"Missing range support! Skip: take_before_as_default_projection"
15-
)
16-
endif()
5+
set(ALL_EXAMPLES take_before_direct_usage)
176

187
message("Examples to be built: ${ALL_EXAMPLES}")
198

209
foreach(example ${ALL_EXAMPLES})
21-
add_executable(beman.take_before.examples.${example})
22-
target_sources(beman.take_before.examples.${example} PRIVATE ${example}.cpp)
10+
add_executable(${example})
11+
target_sources(${example} PRIVATE ${example}.cpp)
2312
target_link_libraries(
24-
beman.take_before.examples.${example}
13+
${example}
2514
PRIVATE beman::take_before
2615
)
2716
endforeach()

examples/take_before_direct_usage.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
2+
13
#include <beman/take_before/take_before.hpp>
24

35
#include <iostream>

include/beman/take_before/take_before.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@
1111
#include <type_traits>
1212
#include <utility>
1313

14+
// clang-format off
15+
#if __cpp_concepts > 202002L
16+
#error "C++20 concepts is required"
17+
#endif
18+
// clang-format on
19+
1420
namespace beman::take_before {
1521

1622
// ============================================================================

src/beman/take_before/CMakeLists.txt

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/beman/take_before/take_before.cpp

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
22

3-
find_package(GTest REQUIRED)
3+
find_package(GTest QUIET)
44

5-
add_executable(beman.take_before.tests.take_before)
6-
target_sources(beman.take_before.tests.take_before PRIVATE take_before.test.cpp)
5+
add_executable(beman_take_before.test)
6+
target_sources(beman_take_before.test PRIVATE take_before.test.cpp)
77
target_link_libraries(
8-
beman.take_before.tests.take_before
8+
beman_take_before.test
99
PRIVATE beman::take_before GTest::gtest GTest::gtest_main
1010
)
1111

1212
include(GoogleTest)
13-
gtest_discover_tests(beman.take_before.tests.take_before)
13+
gtest_discover_tests(beman_take_before.test)

tests/beman/take_before/take_before.test.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
2+
13
#include <beman/take_before/take_before.hpp>
24

35
#include <gtest/gtest.h>

0 commit comments

Comments
 (0)